Changeset 14609
- Timestamp:
- 04/16/13 15:41:07 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/model/model.m
r14603 r14609 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 1172 %2. prepare some simple dimensions 1173 var_id=zeros(300,1);%preallocate 1174 1175 %2. First round: define variables (step=1), put variable (step=2) 1176 fields1=properties('model'); 1177 1178 for step=1:2, 1179 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 1227 if step==1, netcdf.endDef(ncid); end 1228 end 1229 if counter>300, 1230 warning('preallocation of var_id need to be updated'); 1231 end 1232 1171 1233 netcdf.close(ncid) 1172 1173 %2. First round: define dimensions1174 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 fieldname1181 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 else1197 disp(['skipping ' fieldname '...']);1198 end1199 end1200 end1201 1234 end % }}} 1202 1235 function xylim(obj) % {{{
Note:
See TracChangeset
for help on using the changeset viewer.