source:
issm/oecreview/Archive/14312-15392/ISSM-14610-14611.diff@
15393
Last change on this file since 15393 was 15393, checked in by , 12 years ago | |
---|---|
File size: 5.7 KB |
-
TabularUnified ../trunk-jpl/src/m/classes/model/model.m
1138 1138 end % }}} 1139 1139 function memory(obj) % {{{ 1140 1140 1141 disp(sprintf('\nMemory imprint: 1141 disp(sprintf('\nMemory imprint:\n')); 1142 1142 1143 1143 fields=properties('model'); 1144 1144 mem=0; … … 1147 1147 field=obj.(fields{i}); 1148 1148 s=whos('field'); 1149 1149 mem=mem+s.bytes/1e6; 1150 disp(sprintf('%19s: % gMb',fields{i},s.bytes/1e6));1150 disp(sprintf('%19s: %6.2f Mb',fields{i},s.bytes/1e6)); 1151 1151 end 1152 1152 disp(sprintf('%19s--%10s','--------------','--------------')); 1153 1153 disp(sprintf('%19s: %g Mb','Total',mem)); … … 1165 1165 %1. Create NetCDF file 1166 1166 ncid=netcdf.create(filename,'CLOBBER'); 1167 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]);1168 netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['ISSM model (' obj.miscellaneous.name ')']); 1169 1169 netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Author',getenv('USER')); 1170 1170 netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',datestr(now)); 1171 1171 1172 % 2. prepare some simple dimensions1172 %Preallocate variable id, needed to write variables in netcdf file 1173 1173 var_id=zeros(300,1);%preallocate 1174 1174 1175 %2. First round: define variables (step=1), put variable (step=2)1176 fields1=properties('model');1177 1178 1175 for step=1:2, 1179 1176 counter=0; 1180 for i=1:length(fields1), 1181 fields2=fields(obj.(fields1{i})); 1182 for j=1:length(fields2) 1183 counter = counter+1; 1184 fieldname = [fields1{i} '.' fields2{j}]; 1185 field = obj.(fields1{i}).(fields2{j}); 1186 if isa(field,'double') & numel(field)==1, 1187 if step==1, 1188 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[]); 1189 else 1190 netcdf.putVar(ncid,var_id(counter),field); 1191 end 1192 elseif isa(field,'double') & size(field,2)==1, 1193 if step==1, 1194 dim_id = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1)); 1195 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',dim_id); 1196 else 1197 netcdf.putVar(ncid,var_id(counter),field); 1198 end 1199 elseif isa(field,'double') & size(field,2)>1, 1200 if step==1, 1201 dim1_id = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1)); 1202 dim2_id = netcdf.defDim(ncid,[fieldname '_size2'],size(field,2)); 1203 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[dim2_id dim1_id]); 1204 else 1205 netcdf.putVar(ncid,var_id(counter),transpose(field)); 1206 end 1207 elseif isa(field,'char') & ~isempty(field), 1208 if step==1, 1209 dim_id = netcdf.defDim(ncid,[fieldname '_size1'],numel(field)); 1210 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id); 1211 else 1212 netcdf.putVar(ncid,var_id(counter),transpose(field)); 1213 end 1214 elseif isa(field,'logical') & numel(field)==1, 1215 if step==1, 1216 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_BYTE',[]); 1217 else 1218 netcdf.putVar(ncid,var_id(counter),int8(field)); 1219 end 1220 else 1221 disp(['skipping ' fieldname '...']); 1222 end 1223 end 1224 1225 end 1226 1177 var_id=structtonc(ncid,'md',obj,0,var_id,counter,step); 1227 1178 if step==1, netcdf.endDef(ncid); end 1228 1179 end 1180 1229 1181 if counter>300, 1230 1182 warning('preallocation of var_id need to be updated'); 1231 1183 end -
TabularUnified ../trunk-jpl/src/m/io/structtonc.m
1 function [var_id,counter] = structtonc(ncid,fieldname,field,depth,var_id,counter,step); 2 %STRUCTTONC- fill nc file with structure fields 3 % 4 % WARNING: Do not use this function, this function is called 5 % by netcdf(model); 6 % 7 8 %update counter 9 counter = counter+1; 10 11 %Datatype dependent switch 12 if isa(field,'double') & numel(field)==1, 13 if step==1, 14 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[]); 15 else 16 netcdf.putVar(ncid,var_id(counter),field); 17 end 18 elseif isa(field,'double') & size(field,2)==1, 19 if step==1, 20 dim_id = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1)); 21 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',dim_id); 22 else 23 netcdf.putVar(ncid,var_id(counter),field); 24 end 25 elseif isa(field,'double') & size(field,2)>1, 26 if step==1, 27 dim1_id = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1)); 28 dim2_id = netcdf.defDim(ncid,[fieldname '_size2'],size(field,2)); 29 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[dim2_id dim1_id]); 30 else 31 netcdf.putVar(ncid,var_id(counter),transpose(field)); 32 end 33 elseif isa(field,'char') & ~isempty(field), 34 if step==1, 35 dim_id = netcdf.defDim(ncid,[fieldname '_size1'],numel(field)); 36 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id); 37 else 38 netcdf.putVar(ncid,var_id(counter),transpose(field)); 39 end 40 elseif isa(field,'logical') & numel(field)==1, 41 if step==1, 42 var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_BYTE',[]); 43 else 44 netcdf.putVar(ncid,var_id(counter),int8(field)); 45 end 46 elseif isa(field,'struct'), 47 subfields = fields(field); 48 for i=1:length(subfields), 49 [var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i}],field.(subfields{i}),depth+1,var_id,counter,step); 50 end 51 elseif isobject(field), 52 subfields = fields(field); 53 for i=1:length(subfields), 54 [var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i}],field.(subfields{i}),depth+1,var_id,counter,step); 55 end 56 else 57 disp(['skipping ' fieldname '...']); 58 end
Note:
See TracBrowser
for help on using the repository browser.