Changeset 9381 for issm/trunk/src/m/model/marshall.m
- Timestamp:
- 08/23/11 10:26:17 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/model/marshall.m
r9373 r9381 23 23 marshall=template.(field){2}; 24 24 if marshall, 25 WriteData(md,fid,template,field); 26 end 27 end 25 if strcmpi(field,'verbose'), 26 WriteData(fid,field,VerboseToBinary(md.verbose),{'Integer'}); 27 else 28 WriteData(fid,field,md.(field),template.(field)(3:end)); 29 end 30 end 31 end 32 33 %Quick fix: add some fields needed by parameters 34 WriteData(fid,'numberofvertices',md.numberofnodes,{'Integer'}); 28 35 29 36 %close file … … 33 40 end 34 41 35 function WriteData( md,fid,template,field) % {{{42 function WriteData(fid,fieldname,fieldvalue,fieldtype) % {{{ 36 43 %WRITEDATA - write model field in binary file 37 44 % 38 45 % Usage: 39 % WriteData( md,fid,template,field)46 % WriteData(fid,fieldname,fieldvalue,fieldtype) 40 47 % 41 48 % Example: 42 % WriteData( md,fid,template,'thickness')49 % WriteData(fid,'thickness',md.thickness,{'DoubleMat',1}) 43 50 44 51 %first recover data, enum of the data and type of data 45 data= md.(field);46 enum=BuildEnum(field );47 data_type= template.(field){3};52 data=fieldvalue; 53 enum=BuildEnum(fieldname); 54 data_type=fieldtype{1}; 48 55 49 56 if issparse(data), … … 105 112 106 113 %matrix type: 107 mattype= template.(field){4};114 mattype=fieldtype{2}; 108 115 109 116 %Get size … … 113 120 s(1)=0; s(2)=0; 114 121 end 115 122 116 123 %first write length of record 117 124 fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int'); %2 integers (32 bits) + the double matrix + code + matrix type … … 131 138 132 139 %matrix type: 133 mattype= template.(field){4};140 mattype=fieldtype{2}; 134 141 135 142 %Get size … … 139 146 s(1)=0; s(2)=0; 140 147 end 141 148 142 149 %first write length of record 143 150 fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int'); %2 integers (32 bits) + the double matrix + code + matrix type … … 157 164 158 165 %matrix type: 159 mattype= template.(field){4};166 mattype=fieldtype{2}; 160 167 161 168 %Get size … … 165 172 s(1)=0; s(2)=0; 166 173 end 167 174 168 175 %first write length of record 169 176 fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int'); %2 integers (32 bits) + the double matrix + code + matrix type … … 183 190 184 191 numrecords=numel(data); 185 192 186 193 %first get length of record 187 194 recordlength=4+4; %number of records + code … … 190 197 s=size(matrix); 191 198 recordlength=recordlength+4*2+... %row and col of matrix 192 199 s(1)*s(2)*8; %matrix of doubles 193 200 end 194 201 … … 201 208 %write data, first number of records 202 209 fwrite(fid,numrecords,'int'); 203 210 204 211 %write each matrix: 205 212 for i=1:numrecords, … … 230 237 %now write length of string array 231 238 fwrite(fid,num,'int'); 232 239 233 240 %now write the strings 234 241 for i=1:num,
Note:
See TracChangeset
for help on using the changeset viewer.