/[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.3 - (hide annotations) (download)
Mon Feb 3 15:19:04 2014 UTC (11 years, 5 months ago) by gforget
Branch: MAIN
Changes since 1.2: +1 -1 lines
- bug fix.

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     if length(dimids)==3;
49     start=[0 0 tt-1];
50     count=[siz(1) siz(2) 1];
51     elseif isempty(kk);
52     start=[0 0 0 tt-1];
53     count=[siz(1) siz(2) siz(3) 1];
54     else;
55     start=[0 0 kk-1 tt-1];
56     count=[siz(1) siz(2) 1 1];
57     end;
58 gforget 1.2 fldTile=netcdf.getVar(nc,vv,start,count);
59 gforget 1.1 else;
60 gforget 1.2 fldTile=netcdf.getVar(nc,vv);
61     end;
62    
63     %initialize fld
64     if ff==1;
65     siz=[1 1 size(fldTile,3) size(fldTile,4)];
66     fld=NaN*repmat(mygrid.XC,siz);
67     end;
68    
69     %now place in full field
70     for gg=1:mygrid.nFaces;
71     [tmpi,tmpj]=find(tileNo{gg}==ff);
72     if ~isempty(tmpi);
73     tmpi=[min(tmpi(:)):max(tmpi(:))];
74     tmpj=[min(tmpj(:)):max(tmpj(:))];
75     fld{gg}(tmpi,tmpj,:,:)=fldTile;
76     end;
77 gforget 1.1 end;
78    
79     netcdf.close(nc);
80    
81     end;%for ff=1:mygrid.nFaces;
82    
83    

  ViewVC Help
Powered by ViewVC 1.1.22