/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_IO/read_bin.m
ViewVC logotype

Contents of /MITgcm_contrib/gael/matlab_class/gcmfaces_IO/read_bin.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download)
Fri Feb 12 22:24:08 2016 UTC (9 years, 5 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65x, checkpoint65v, checkpoint65w, checkpoint65u, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, HEAD
Changes since 1.2: +4 -4 lines
- fix bug introduced in previous revision

1 function [fld]=read_bin(fileName,varargin);
2 %usage: fld=read_bin(fileName); reads 3D field (N levels in 3rd dim)
3 %usage: fld=read_bin(fileName,trec); reads 3D field, at trec (50 levels)
4 %usage: fld=read_bin(fileName,trec,k); reads 2D field, at level k, at trec (50 levels)
5 %usage: fld=read_bin(fileName,trec,0); reads 2D field, at trec (1 level)
6 %usage: fld=read_bin(fileName,trec,0,prec); prec can be set to 32 (default) or 64 (double precision)
7
8 gcmfaces_global;
9
10 if nargin>1; tt=varargin{1}; else; tt=1; end;
11 if nargin>2; kk=varargin{2}; else; kk=[]; end;
12 if nargin>3; prec=varargin{3}; else; prec=32; end;
13
14 myprec=['float' num2str(prec)];
15 n1=mygrid.ioSize(1); n2=mygrid.ioSize(2); n3=length(mygrid.RC); nF=mygrid.nFaces;
16 recl2D=n1*n2*(prec/8); recl3D=n1*n2*n3*(prec/8);
17
18 if nargin==1; n3=dir(fileName); n3=n3.bytes/recl2D; recl3D=recl2D*n3; end;
19
20 fid=fopen(fileName,'r','b');
21 if ~isempty(kk);
22 if kk==0;%meaning the field is only two dimensional
23 status=fseek(fid,(tt-1)*recl2D,'bof');
24 fld=reshape(fread(fid,n1*n2,myprec),[n1 n2]);
25 else;
26 status=fseek(fid,(tt-1)*recl3D+(kk-1)*recl2D,'bof');
27 fld=reshape(fread(fid,n1*n2,myprec),[n1 n2]);
28 end;
29 else;
30 status=fseek(fid,(tt-1)*recl3D,'bof');
31 fld=reshape(fread(fid,n1*n2*n3,myprec),[n1 n2 n3]);
32 end;
33 fclose(fid);
34
35 fld=convert2gcmfaces(fld);
36

  ViewVC Help
Powered by ViewVC 1.1.22