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

Annotation of /MITgcm_contrib/gael/matlab_class/gcmfaces_IO/read_nctiles.m

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


Revision 1.4 - (hide annotations) (download)
Tue Feb 4 22:13:56 2014 UTC (11 years, 5 months ago) by gforget
Branch: MAIN
Changes since 1.3: +8 -6 lines
- process2nctiles.m : add 'step' variable (time step from binary).
- read_nctiles.m : enable read of multiple times.

1 gforget 1.3 function [fld]=read_nctiles(fileName,fldName,varargin);
2 gforget 1.1 %usage: fld=read_nctiles(fileName); reads full field using fileName as field name
3     %usage: fld=read_nctiles(fileName,fldName); reads full field (all depths, all times)
4     %usage: fld=read_nctiles(fileName,fldName,tt); reads 3D or 2D field, at time index tt (all depths)
5     %usage: fld=read_nctiles(fileName,fldName,tt,kk); reads 3D field, at depth index kk, at time index tt
6    
7     gcmfaces_global;
8    
9     if nargin==1;
10     tmp1=['/' fileName];
11     tmp2=strfind(tmp1,'/');
12     fldName=tmp1(tmp2(end)+1:end);
13     end;
14     if nargin>2; tt=varargin{1}; else; tt=[]; end;
15     if nargin>3; kk=varargin{2}; else; kk=[]; end;
16    
17 gforget 1.2 %determine map of tile indices
18     tmp1=dir([fileName '*']);
19     if length(tmp1)==mygrid.nFaces;
20     tileNo=mygrid.XC; for ff=1:mygrid.nFaces; tileNo{ff}(:)=ff; end;
21     else;
22     fileIn=sprintf('%s.%04d.nc',fileName,1);
23     nc=netcdf.open(fileIn,0);
24     vv = netcdf.inqVarID(nc,fldName);
25     tmp2=netcdf.getVar(nc,vv);
26     netcdf.close(nc);
27     tileSize=[size(tmp2,1) size(tmp2,2)];
28     tileNo=gcmfaces_loc_tile(tileSize(1),tileSize(2));
29     end;
30 gforget 1.1
31 gforget 1.2 %determine tile list
32     tileList=unique(convert2vector(tileNo));
33     tileList=tileList(~isnan(tileList));
34     ntile=length(tileList);
35 gforget 1.1
36 gforget 1.2 for ff=1:ntile
37    
38     fileIn=sprintf('%s.%04d.nc',fileName,ff);
39 gforget 1.1 nc=netcdf.open(fileIn,0);
40     vv = netcdf.inqVarID(nc,fldName);
41     [varname,xtype,dimids,natts]=netcdf.inqVar(nc,vv);
42    
43 gforget 1.2 [dimname,siz(1)] = netcdf.inqDim(nc,dimids(1));
44     [dimname,siz(2)] = netcdf.inqDim(nc,dimids(2));
45     siz=[siz length(mygrid.RC)];
46 gforget 1.1
47     if ~isempty(tt);
48 gforget 1.4 t0=tt(1)-1;
49     nt=tt(end)-tt(1)+1;
50 gforget 1.1 if length(dimids)==3;
51 gforget 1.4 start=[0 0 t0];
52     count=[siz(1) siz(2) nt];
53 gforget 1.1 elseif isempty(kk);
54 gforget 1.4 start=[0 0 0 t0];
55     count=[siz(1) siz(2) siz(3) nt];
56 gforget 1.1 else;
57 gforget 1.4 start=[0 0 kk-1 t0];
58     count=[siz(1) siz(2) 1 nt];
59 gforget 1.1 end;
60 gforget 1.2 fldTile=netcdf.getVar(nc,vv,start,count);
61 gforget 1.1 else;
62 gforget 1.2 fldTile=netcdf.getVar(nc,vv);
63     end;
64    
65     %initialize fld
66     if ff==1;
67     siz=[1 1 size(fldTile,3) size(fldTile,4)];
68     fld=NaN*repmat(mygrid.XC,siz);
69     end;
70    
71     %now place in full field
72     for gg=1:mygrid.nFaces;
73     [tmpi,tmpj]=find(tileNo{gg}==ff);
74     if ~isempty(tmpi);
75     tmpi=[min(tmpi(:)):max(tmpi(:))];
76     tmpj=[min(tmpj(:)):max(tmpj(:))];
77     fld{gg}(tmpi,tmpj,:,:)=fldTile;
78     end;
79 gforget 1.1 end;
80    
81     netcdf.close(nc);
82    
83     end;%for ff=1:mygrid.nFaces;
84    
85    

  ViewVC Help
Powered by ViewVC 1.1.22