1 |
function [fldUe,fldVn]=calc_UEVNfromUXVY(fldU,fldV); |
2 |
%object: compute Eastward/Northward vectors form X/Y vectors |
3 |
%inputs: fldU/fldV are the X/Y vector fields at velocity points |
4 |
%outputs: fldUe/fldVn are the Eastward/Northward vectors at tracer points |
5 |
|
6 |
global mygrid; |
7 |
|
8 |
%fldU(mygrid.hFacW==0)=NaN; fldV(mygrid.hFacS==0)=NaN; |
9 |
nr=size(fldU.f1,3); fldU(mygrid.hFacW(:,:,1:nr)==0)=NaN; fldV(mygrid.hFacS(:,:,1:nr)==0)=NaN; |
10 |
|
11 |
[FLDU,FLDV]=exch_UV(fldU,fldV); |
12 |
|
13 |
fldUe=fldU; fldVn=fldV; |
14 |
for iF=1:fldU.nFaces; |
15 |
tmp1=FLDU{iF}(1:end-1,:,:); tmp2=FLDU{iF}(2:end,:,:); |
16 |
fldUe{iF}=reshape(nanmean([tmp1(:) tmp2(:)],2),size(tmp1)); |
17 |
tmp1=FLDV{iF}(:,1:end-1,:); tmp2=FLDV{iF}(:,2:end,:); |
18 |
fldVn{iF}=reshape(nanmean([tmp1(:) tmp2(:)],2),size(tmp1)); |
19 |
end; |
20 |
|
21 |
FLDU=fldUe; FLDV=fldVn; |
22 |
cs=mk3D(mygrid.AngleCS,FLDU); sn=mk3D(mygrid.AngleSN,FLDU); |
23 |
|
24 |
fldUe=+FLDU.*cs-FLDV.*sn; |
25 |
fldVn=FLDU.*sn+FLDV.*cs; |
26 |
|
27 |
|