% % Load M.I.T. GCM model data output files. % function array = Readmodel( fileName, dims, format ) if nargin < 2 fprintf(2,'**ERROR** Wrong number of arguments.\n') fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') return end if nargin == 2 format = 'float32'; end if size(dims,1) ~= 1 fprintf(2,'**ERROR** Array dimensions mis-specified.\n') fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') return end fid=fopen(fileName,'r','b'); if fid < 0 fprintf(2,'**ERROR** Unable to open input file "%s".\n',fileName) fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') return end arraySize=1+size(dims,2)+prod(dims); array=zeros(1,arraySize); array(1)=size(dims,2); for i = 1 : size(dims,2); array(i+1)=dims(1,i); end [dummy,cnt]=fread(fid,1,'int'); if cnt ~= 1 fprintf(2,'**ERROR** Unable to read first byte of file "%s".\n',fileName) fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') fclose(fid) return end [array(1+size(dims,2)+1:size(array,2)),cnt]=fread(fid,prod(dims),format); if cnt ~= prod(dims) fprintf(2,'**ERROR** Unable to read field data from file "%s".\n',fileName) fprintf(2,'Usage: Readmodel(''pathname'', [dim1 dim2 dim3 ...])\n') fclose(fid) return end return