Changeset 14603


Ignore:
Timestamp:
04/16/13 14:41:21 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: first prototype of netcdf file from md (To be improved)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/model/model.m

    r14559 r14603  
    11411141                disp(sprintf('\nMemory imprint: '));
    11421142
    1143                 objects=fields(obj);
    1144                 memory=0;
     1143                fields=properties('model');
     1144                mem=0;
    11451145               
    1146                 for i=1:length(objects),
    1147                         field=objects{i};
    1148                         realobject=obj.(field);
    1149                         s=whos('realobject');
    1150                         memory=memory+s.bytes/1e6;
    1151                         disp(sprintf('%19s: %g Mb',field,s.bytes/1e6));
     1146                for i=1:length(fields),
     1147                        field=obj.(fields{i});
     1148                        s=whos('field');
     1149                        mem=mem+s.bytes/1e6;
     1150                        disp(sprintf('%19s: %g Mb',fields{i},s.bytes/1e6));
    11521151                end
    1153                 disp(sprintf('Overall: %g Mb',memory));
     1152                disp(sprintf('%19s--%10s','--------------','--------------'));
     1153                disp(sprintf('%19s: %g Mb','Total',mem));
     1154                end % }}}
     1155                function netcdf(obj,filename) % {{{
     1156                %NETCDF - save model as netcdf
     1157                %
     1158                %   Usage:
     1159                %      netcdf(md,filename)
     1160                %
     1161                %   Example:
     1162                %      netcdf(md,'model.nc');
     1163
     1164                disp('Saving model as NetCDF');
     1165                %1. Create NetCDF file
     1166                ncid=netcdf.create(filename,'CLOBBER');
     1167                netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Conventions','CF-1.4');
     1168                netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['ISSM model' obj.miscellaneous.name]);
     1169                netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Author',getenv('USER'));
     1170                netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',datestr(now));
     1171                netcdf.close(ncid)
     1172
     1173                %2. First round: define dimensions
     1174                fields1=properties('model');
     1175                for i=1:length(fields1),
     1176                        subfields=fields(obj.(fields1{i}));
     1177                        for j=1:length(subfields)
     1178                                fieldname = [fields1{i} '.' subfields{j}];
     1179                                field = obj.(fields1{i}).(subfields{j});
     1180                                fieldname
     1181                                if isa(field,'double') & numel(field)==1,
     1182                                        nccreate(filename,fieldname);
     1183                                        ncwrite( filename,fieldname,field);
     1184                                elseif isa(field,'double') & size(field,2)==1,
     1185                                        nccreate(filename,fieldname,'Dimensions',{[fieldname '_length'] size(field,1)});
     1186                                        ncwrite(filename ,fieldname,field);
     1187                                elseif isa(field,'double') & size(field,2)>1,
     1188                                        nccreate(filename,fieldname,'Dimensions',{[fieldname '_size2'] size(field,2) [fieldname '_size1'] size(field,1)});
     1189                                        ncwrite(filename ,fieldname,transpose(field));
     1190                                elseif isa(field,'char') & ~isempty(field),
     1191                                        nccreate(filename,fieldname,'Dimensions',{[fieldname '_length'] numel(field)},'DataType','char');
     1192                                        ncwrite( filename,fieldname,field);
     1193                                elseif isa(field,'logical') & numel(field)==1,
     1194                                        nccreate(filename,fieldname,'DataType','int8');
     1195                                        ncwrite( filename,fieldname,int8(field));
     1196                                else
     1197                                        disp(['skipping ' fieldname '...']);
     1198                                end
     1199                        end
     1200                end
    11541201                end % }}}
    11551202                function xylim(obj) % {{{
Note: See TracChangeset for help on using the changeset viewer.