| 1 |
gforget |
1.1 |
function [xplot_mf,yplot_mf,zplot_mf]=diag_mfCOORD(cur_Vflux,cur_RefField,cur_RefValues); |
| 2 |
|
|
|
| 3 |
|
|
%input: |
| 4 |
|
|
% cur_Vflux -> Vdxdz 3D field |
| 5 |
|
|
% cur_RefField -> Depth, Temperature, or Density 3D field |
| 6 |
|
|
% cur_RefValues -> 1D vector; values defining the classes center (e.g. density values) |
| 7 |
|
|
% |
| 8 |
|
|
%by hypothesis: |
| 9 |
|
|
% both cur_Vflux and cur_RefField are provided on V points, with NaN-masked land points |
| 10 |
|
|
% the cur_RefValues vector increases |
| 11 |
|
|
% |
| 12 |
|
|
%to plot the result: figure; contourf(xplot_mf,-yplot_mf,zplot_mf,[-48:4:48]); |
| 13 |
|
|
|
| 14 |
|
|
jpi=size(cur_Vflux,1); %number of zonal grid points |
| 15 |
|
|
jpj=size(cur_Vflux,2); %number of meridional grid points |
| 16 |
|
|
jpk=size(cur_Vflux,3); %number of vertical grid points |
| 17 |
|
|
|
| 18 |
|
|
jpk2=length(cur_RefValues); |
| 19 |
|
|
|
| 20 |
|
|
xplot_mf=[1:jpj]'*ones(1,jpk2); |
| 21 |
|
|
yplot_mf=ones(jpj,1)*cur_RefValues; |
| 22 |
|
|
zplot_mf=NaN*ones(jpj,jpk2); |
| 23 |
|
|
|
| 24 |
|
|
for kcur=1:jpk2 |
| 25 |
|
|
tmp1=cur_Vflux; |
| 26 |
|
|
if kcur==1 |
| 27 |
|
|
tmp1(find(cur_RefField>(cur_RefValues(1)+cur_RefValues(2))/2))=NaN; tmp1(find(isnan(tmp1)))=0; |
| 28 |
|
|
elseif kcur==jpk2 |
| 29 |
|
|
tmp1(find(cur_RefField<=(cur_RefValues(end)+cur_RefValues(end-1))/2))=NaN; tmp1(find(isnan(tmp1)))=0; |
| 30 |
|
|
else |
| 31 |
|
|
tmp1(find(cur_RefField<=(cur_RefValues(kcur)+cur_RefValues(kcur-1))/2))=NaN; |
| 32 |
|
|
tmp1(find(cur_RefField>(cur_RefValues(kcur)+cur_RefValues(kcur+1))/2))=NaN; |
| 33 |
|
|
tmp1(find(isnan(tmp1)))=0; |
| 34 |
|
|
end |
| 35 |
|
|
zplot_mf(:,kcur)=squeeze(sum(sum(tmp1,3),1)); |
| 36 |
|
|
end |
| 37 |
|
|
|
| 38 |
|
|
mask_mf=zplot_mf; mask_mf(find(mask_mf==0))=NaN; mask_mf(find(~isnan(mask_mf)))=1; |
| 39 |
|
|
%zplot_mf=cumsum(zplot_mf,2)*1e-6; |
| 40 |
|
|
zplot_mf=flipdim(cumsum(flipdim(zplot_mf,2),2)*1e-6,2); |
| 41 |
|
|
zplot_mf=zplot_mf.*mask_mf; |
| 42 |
|
|
|
| 43 |
|
|
|