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 |