/[MITgcm]/MITgcm_contrib/gael/matlab/eccov4_lonlat.m
ViewVC logotype

Annotation of /MITgcm_contrib/gael/matlab/eccov4_lonlat.m

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


Revision 1.1 - (hide annotations) (download)
Thu Feb 5 03:55:20 2015 UTC (10 years, 5 months ago) by gforget
Branch: MAIN
CVS Tags: HEAD
- extract longitude-latitude sector from nctiles files.

1 gforget 1.1 function [FLD,varargout]=eccov4_lonlat(fldLoc,fldName,numRec,varargin);
2     %
3     % Extract the lat-lon part of ecco v4 fields.
4     % FLD=eccov4_lonlat(fldLoc,fldName,numRec) reads record
5     % numRec (set to [] for all records) of fldName in fldLoc
6     % ---> assumption : fldName designates a variable located at grid cell
7     % centers (e.g. RAC)
8     %
9     % [FLD,MATE]=eccov4_lonlat(fldLoc,fldName,numRec,mateLoc,mateName,1)
10     % reads record numRec of fldName,mateName in fldLoc,mateLoc
11     % ---> assumption : fldName,mateName designate un-signed staggered
12     % variables at grid cell edges (e.g. DXC,DYC)
13     %
14     % [FLD,MATE]=eccov4_lonlat(fldLoc,fldName,numRec,mateLoc,mateName,-1) reads
15     % reads record numRec of fldName,mateName in fldLoc,mateLoc and flip signs
16     % ---> assumption : fldName,mateName designate staggered vector
17     % variables at grid cell edges (e.g. UVELMASS,VVELMASS)
18     %
19     % Example:
20     % fldLoc='nctiles_grid/GRID'; fldName='DXC';
21     % mateLoc='nctiles_grid/GRID'; mateName='DYC';
22     % [DXC,DYC]=eccov4_lonlat(fldLoc,fldName,1,mateLoc,mateName,1);
23    
24     %optional input parameters
25     if nargin>3;
26     mateLoc=varargin{1};
27     mateName=varargin{2};
28     changeSign=varargin{3};
29     end;
30    
31     %determine directory and file names
32     [nameDir,nameFil]=eccov4_search(fldLoc,fldName);
33    
34     %set dimensions
35     fil=fullfile(nameDir,filesep,nameFil(1).name);
36     tmp=ncread(fil,fldName);
37     siz=size(tmp);
38     strt=ones(size(siz)); cnt=siz;
39     if ~isempty(numRec)&(length(siz)>2);
40     strt(end)=numRec; cnt(end)=1;
41     end;
42    
43     %read from file
44     fld={};
45     for T=1:13 %loop through 13 tiles
46     fil=fullfile(nameDir,filesep,nameFil(T).name);
47     fld{T}=ncread(fil,fldName,strt,cnt);
48     end %for T loop through tiles
49    
50     %re-arrange into faces
51     fld=eccov4_faces(fld);
52    
53     if nargin>3;
54     %determine directory and file names
55     [nameDir,nameFil]=eccov4_search(mateLoc,mateName);
56    
57     %read from file
58     mate={};
59     for T=1:13 %loop through 13 tiles
60     fil=fullfile(nameDir,filesep,nameFil(T).name);
61     mate{T}=ncread(fil,mateName,strt,cnt);
62     end %for T loop through tiles
63    
64     %re-arrange into faces
65     mate=eccov4_faces(mate);
66     end;
67    
68     if nargin<4;
69     %extract longitude-latitude sector
70     FLD=eccov4_array(fld);
71     FLD=FLD(:,62:239,:,:);
72     FLD=circshift(FLD,[142 0]);
73     else;
74     %extract first component:
75     FLD=eccov4_array(fld);
76     FLD=FLD(:,62:239,:,:);
77     FLD(1:90,:,:,:)=fld{1}(:,62:239,:,:);
78     FLD(91:180,:,:,:)=fld{2}(:,62:239,:,:);
79     tmp1=flipdim(permute(mate{4},[2 1 3 4]),2);
80     FLD(181:270,:,:,:)=tmp1(:,62:239,:,:);
81     tmp1=flipdim(permute(mate{5},[2 1 3 4]),2);
82     FLD(271:360,:,:,:)=tmp1(:,62:239,:,:);
83     FLD=circshift(FLD,[142 0]);
84     %extract second component: note index (and sign) shift
85     MATE=eccov4_array(mate);
86     MATE=MATE(:,62:239,:,:);
87     MATE(1:90,:,:,:)=mate{1}(:,62:239,:,:);
88     MATE(91:180,:,:,:)=mate{2}(:,62:239,:,:);
89     tmp1=flipdim(permute(fld{4},[2 1 3 4]),2);
90     MATE(181:270,:,:,:)=changeSign*tmp1(:,61:238,:,:);
91     tmp1=flipdim(permute(fld{5},[2 1 3 4]),2);
92     MATE(271:360,:,:,:)=changeSign*tmp1(:,61:238,:,:);
93     MATE=circshift(MATE,[142 0]);
94     %
95     varargout{1}=MATE;
96     end;
97    
98     function [nameDir,nameFil]=eccov4_search(fldLoc,fldName);
99    
100     %determine directory and file names
101     nameFil=[];
102     if isempty(nameFil);
103     nameFil=dir(fullfile([fldLoc '*.nc']));
104     nameDir = fileparts(fldLoc);
105     end;
106     if isempty(nameFil);
107     nameFil=dir(fullfile(fldLoc,filesep,[fldName '*.nc']));
108     nameDir = fldLoc;
109     end;
110     if isempty(nameFil);
111     nameFil=dir(fullfile(fldLoc,filesep,fldName,filesep,[fldName '*.nc']));
112     nameDir = fullfile(fldLoc,filesep,fldName,filesep);
113     end;
114     if length(nameFil)~=13; error('did not find files matching description'); end;
115    
116     function [fld]=eccov4_faces(fld);
117    
118     fld{1}=cat(2,fld{1},fld{2},fld{3});
119     fld{2}=cat(2,fld{4},fld{5},fld{6});
120     fld{3}=fld{7};
121     fld{4}=cat(1,fld{8},fld{9},fld{10});
122     fld{5}=cat(1,fld{11},fld{12},fld{13});
123     fld={fld{1:5}};
124    
125     function [FLD]=eccov4_array(fld);
126    
127     FLD=cat(1,fld{1},fld{2},...
128     flipdim(permute(fld{4},[2 1 3 4]),2),...
129     flipdim(permute(fld{5},[2 1 3 4]),2));
130     tmp2=flipdim(permute(fld{3},[2 1 3 4]),1);
131     FLD=cat(2,FLD,repmat(tmp2,[4 1]));
132     FLD(91:360,271:360)=NaN;
133    

  ViewVC Help
Powered by ViewVC 1.1.22