1 |
gforget |
1.1 |
function [FLD]=calc_zonmean_T(fld,LATS_MASKS); |
2 |
|
|
|
3 |
|
|
%by assumption: zonmean_TUV_mask is done, and grid_load is done |
4 |
|
|
global mygrid; |
5 |
|
|
|
6 |
|
|
%initialize output: |
7 |
|
|
n3=max(size(fld.f1,3),1); n4=max(size(fld.f1,4),1); |
8 |
|
|
FLD=NaN*squeeze(zeros(length(LATS_MASKS),n3,n4)); |
9 |
|
|
|
10 |
|
|
%use array format to speed up computation below: |
11 |
|
|
fld=convert2array(fld); |
12 |
|
|
n1=size(fld,1); n2=size(fld,2); |
13 |
|
|
fld=reshape(fld,n1*n2,n3*n4); |
14 |
|
|
fld(isnan(fld))=0; |
15 |
|
|
rac=reshape(convert2array(mygrid.RAC),n1*n2,1)*ones(1,n3*n4); |
16 |
|
|
if n3==length(mygrid.RC); |
17 |
|
|
hFacC=reshape(convert2array(mygrid.hFacC),n1*n2,n3*n4); |
18 |
|
|
else; |
19 |
|
|
hFacC=reshape(convert2array(mygrid.hFacCsurf),n1*n2,n3*n4); |
20 |
|
|
end; |
21 |
|
|
rac=rac.*hFacC; |
22 |
|
|
fld=fld.*rac; |
23 |
|
|
|
24 |
|
|
%area of ocean points only: |
25 |
|
|
rac(fld==0)=0; |
26 |
|
|
|
27 |
|
|
for iy=1:length(LATS_MASKS); |
28 |
|
|
|
29 |
|
|
%get list ofpoints that form a zonal band: |
30 |
|
|
mm=convert2array(LATS_MASKS(iy).mmt); |
31 |
|
|
mm=find(~isnan(mm)); |
32 |
|
|
|
33 |
|
|
%do the area weighed average along this band: |
34 |
|
|
tmp1=sum(fld(mm,:),1); |
35 |
|
|
tmp2=sum(rac(mm,:),1); |
36 |
|
|
tmp2(tmp2==0)=NaN; |
37 |
|
|
tmp1=tmp1./tmp2; |
38 |
|
|
|
39 |
|
|
%store: |
40 |
|
|
FLD(iy,:,:)=reshape(tmp1,n3,n4); |
41 |
|
|
|
42 |
|
|
end; |
43 |
|
|
|
44 |
|
|
|