| 1 |
% |
| 2 |
% Load M.I.T. GCM model data output files. |
| 3 |
% |
| 4 |
function array = Readmodel( fileName, dims, format ) |
| 5 |
if nargin < 2 |
| 6 |
fprintf(2,'**ERROR** Wrong number of arguments.\n') |
| 7 |
fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') |
| 8 |
return |
| 9 |
end |
| 10 |
if nargin == 2 |
| 11 |
format = 'float32'; |
| 12 |
end |
| 13 |
if size(dims,1) ~= 1 |
| 14 |
fprintf(2,'**ERROR** Array dimensions mis-specified.\n') |
| 15 |
fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') |
| 16 |
return |
| 17 |
end |
| 18 |
fid=fopen(fileName,'r','b'); |
| 19 |
if fid < 0 |
| 20 |
fprintf(2,'**ERROR** Unable to open input file "%s".\n',fileName) |
| 21 |
fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') |
| 22 |
return |
| 23 |
end |
| 24 |
arraySize=1+size(dims,2)+prod(dims); |
| 25 |
array=zeros(1,arraySize); |
| 26 |
array(1)=size(dims,2); |
| 27 |
for i = 1 : size(dims,2); |
| 28 |
array(i+1)=dims(1,i); |
| 29 |
end |
| 30 |
[dummy,cnt]=fread(fid,1,'int'); |
| 31 |
if cnt ~= 1 |
| 32 |
fprintf(2,'**ERROR** Unable to read first byte of file "%s".\n',fileName) |
| 33 |
fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') |
| 34 |
fclose(fid) |
| 35 |
return |
| 36 |
end |
| 37 |
[array(1+size(dims,2)+1:size(array,2)),cnt]=fread(fid,prod(dims),format); |
| 38 |
if cnt ~= prod(dims) |
| 39 |
fprintf(2,'**ERROR** Unable to read field data from file "%s".\n',fileName) |
| 40 |
fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') |
| 41 |
fclose(fid) |
| 42 |
return |
| 43 |
end |
| 44 |
return |