| 1 |
edhill |
1.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 |