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

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

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


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

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