Index: /issm/trunk-jpl/src/m/classes/model/model.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/model/model.m	(revision 14602)
+++ /issm/trunk-jpl/src/m/classes/model/model.m	(revision 14603)
@@ -1141,15 +1141,62 @@
 		disp(sprintf('\nMemory imprint: '));
 
-		objects=fields(obj);
-		memory=0;
+		fields=properties('model');
+		mem=0;
 		
-		for i=1:length(objects),
-			field=objects{i};
-			realobject=obj.(field);
-			s=whos('realobject'); 
-			memory=memory+s.bytes/1e6;
-			disp(sprintf('%19s: %g Mb',field,s.bytes/1e6));
+		for i=1:length(fields),
+			field=obj.(fields{i});
+			s=whos('field'); 
+			mem=mem+s.bytes/1e6;
+			disp(sprintf('%19s: %g Mb',fields{i},s.bytes/1e6));
 		end
-		disp(sprintf('Overall: %g Mb',memory));
+		disp(sprintf('%19s--%10s','--------------','--------------'));
+		disp(sprintf('%19s: %g Mb','Total',mem));
+		end % }}}
+		function netcdf(obj,filename) % {{{
+		%NETCDF - save model as netcdf
+		%
+		%   Usage:
+		%      netcdf(md,filename)
+		%
+		%   Example:
+		%      netcdf(md,'model.nc');
+
+		disp('Saving model as NetCDF');
+		%1. Create NetCDF file
+		ncid=netcdf.create(filename,'CLOBBER');
+		netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Conventions','CF-1.4');
+		netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['ISSM model' obj.miscellaneous.name]);
+		netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Author',getenv('USER'));
+		netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',datestr(now));
+		netcdf.close(ncid)
+
+		%2. First round: define dimensions
+		fields1=properties('model');
+		for i=1:length(fields1),
+			subfields=fields(obj.(fields1{i}));
+			for j=1:length(subfields)
+				fieldname = [fields1{i} '.' subfields{j}];
+				field = obj.(fields1{i}).(subfields{j});
+				fieldname
+				if isa(field,'double') & numel(field)==1,
+					nccreate(filename,fieldname);
+					ncwrite( filename,fieldname,field);
+				elseif isa(field,'double') & size(field,2)==1,
+					nccreate(filename,fieldname,'Dimensions',{[fieldname '_length'] size(field,1)});
+					ncwrite(filename ,fieldname,field);
+				elseif isa(field,'double') & size(field,2)>1,
+					nccreate(filename,fieldname,'Dimensions',{[fieldname '_size2'] size(field,2) [fieldname '_size1'] size(field,1)});
+					ncwrite(filename ,fieldname,transpose(field));
+				elseif isa(field,'char') & ~isempty(field),
+					nccreate(filename,fieldname,'Dimensions',{[fieldname '_length'] numel(field)},'DataType','char');
+					ncwrite( filename,fieldname,field);
+				elseif isa(field,'logical') & numel(field)==1,
+					nccreate(filename,fieldname,'DataType','int8');
+					ncwrite( filename,fieldname,int8(field));
+				else
+					disp(['skipping ' fieldname '...']);
+				end
+			end
+		end
 		end % }}}
 		function xylim(obj) % {{{
