1 |
% $Header: /u/gcmpack/MITgcm/verification/offline_exf_seaice/input/grph_diag.m,v 1.1 2013/01/10 20:23:52 jmc Exp $ |
2 |
% $Name: $ |
3 |
|
4 |
if size(who('kpr'),1) > 0, |
5 |
fprintf('kpr is defined and = %i \n',kpr); |
6 |
else |
7 |
fprintf('kpr undefined ; set to 1 \n'); kpr=1 ; |
8 |
end |
9 |
|
10 |
Nexp=1; %- plot results from 1 (in rDir1) or from 2 experiments (in rDir1 & rDir2) |
11 |
kdif=0; %- if Nexp=2, do diff plot (kdif=1) or plot both exp. field (kdif=0) |
12 |
deltaT=3600; |
13 |
rDir1='./'; iter=[1:5]*24; |
14 |
rDir2=rDir1; ite2=iter; |
15 |
%rDir2='res_n05/'; %ite2=24; |
16 |
gDir=rDir1; |
17 |
|
18 |
namF='iceDiag'; |
19 |
%namF='snapshot'; iter=iter-1; ite2=iter; |
20 |
|
21 |
ii=strfind(rDir1,'/'); if length(ii) > 1, ii=1+ii(end-1); else ii=1; end |
22 |
titexp1=rDir1(ii:end-1); titexp1=strrep(titexp1,'_','\_'); |
23 |
ii=strfind(rDir2,'/'); if length(ii) > 1, ii=1+ii(end-1); else ii=1; end |
24 |
titexp2=rDir2(ii:end-1); titexp2=strrep(titexp2,'_','\_'); |
25 |
|
26 |
G=load_grid(gDir,0); |
27 |
nx=G.dims(1); ny=G.dims(2); |
28 |
xc=[1:nx]; xc=xc-mean(xc); yc=[1:ny]-.5; |
29 |
|
30 |
msk1=squeeze(G.hFacC); msk1=ceil(msk1); msk1=min(msk1,1); |
31 |
|
32 |
Nit=length(iter); |
33 |
if kpr > 0, |
34 |
clear missingValue ; |
35 |
[v4d1,its,M]=rdmds([rDir1,namF],iter); %v4d1=squeeze(v4d1); |
36 |
eval(M); namV=char(fldList) ; nV=size(namV,1); |
37 |
if Nexp > 1, [v4d2,its,M]=rdmds([rDir2,namF],ite2); end |
38 |
jA=0; [J]=find(strcmp(fldList,'SI_Fract')); if length(J) == 1 & jA == 0, jA=J; end |
39 |
[J]=find(strcmp(fldList,'SIarea ')); if length(J) == 1 & jA == 0, jA=J; end |
40 |
jH=0; [J]=find(strcmp(fldList,'SI_Thick')); if length(J) == 1 & jH == 0, jH=J; end |
41 |
jE=0; [J]=find(strcmp(fldList,'SIheff ')); if length(J) == 1 & jE == 0, jE=J; end |
42 |
if size(who('missingValue'),1) > 0, |
43 |
fprintf('take missingValue from meta file:'); |
44 |
if strcmp(dataprec,'float32'), misVal=single(missingValue); else misVal=missingValue; end |
45 |
else |
46 |
fprintf('no missingValue defined ; set'); misVal=-999.; |
47 |
end |
48 |
fprintf(' misVal= %f\n',misVal); |
49 |
end |
50 |
|
51 |
% add/replace Effective thickness |
52 |
nVo=nV; |
53 |
%- to disable addition/replacement: |
54 |
%jA=-1; |
55 |
if jE == 0 & jA*jH > 0, |
56 |
jE=12; |
57 |
if jE > nV, jE=nV+1; |
58 |
var=v4d1; v4d1=zeros([dimList jE Nit]); v4d1(:,:,1:nV,:)=var; |
59 |
if Nexp > 1, var=v4d2; v4d2=zeros([dimList jE Nit]); v4d2(:,:,1:nV,:)=var; end |
60 |
nV=jE; |
61 |
end |
62 |
namV(jE,:)='SI_Heff '; |
63 |
v4d1(:,:,jE,:)=v4d1(:,:,jA,:).*v4d1(:,:,jH,:); |
64 |
if Nexp > 1, v4d2(:,:,jE,:)=v4d2(:,:,jA,:).*v4d2(:,:,jH,:); end |
65 |
end |
66 |
if jH == 0 & jA*jE > 0, |
67 |
jH=12; |
68 |
if jH > nV, jH=nV+1; |
69 |
var=v4d1; v4d1=zeros([dimList jE Nit]); v4d1(:,:,1:nV,:)=var; |
70 |
if Nexp > 1, var=v4d2; v4d2=zeros([dimList jE Nit]); v4d2(:,:,1:nV,:)=var; end |
71 |
nV=jH; |
72 |
end |
73 |
namV(jH,:)='SI_thick'; |
74 |
var=v4d1(:,:,jA,:); var(find(var==0))=-1; var=1./var; var=max(var,0); |
75 |
v4d1(:,:,jH,:)=v4d1(:,:,jE,:).*var; |
76 |
if Nexp > 1, |
77 |
var=v4d2(:,:,jA,:); var(find(var==0))=-1; var=1./var; var=max(var,0); |
78 |
v4d2(:,:,jH,:)=v4d2(:,:,jE,:).*var; |
79 |
end |
80 |
end |
81 |
|
82 |
% nt : select which time index to plot in 2-d |
83 |
% is,js : select which section to plot |
84 |
nf=0; nt=Nit; kplot=ones(1,nV); |
85 |
%kplot(11:nV)=0; |
86 |
is=61; js=41; |
87 |
|
88 |
xtxt=xc(1); ytxt=yc(1)-5*(yc(2)-yc(1)); clin='kbcmrgy'; |
89 |
xydp=[50 20]; xyp0=[50 20]+nf*xydp; xysp=[500 700]; xydp=[100 40]; |
90 |
|
91 |
for j=1:nV, |
92 |
facM=1.; ccB=[0 0]; |
93 |
if j <= nVo, |
94 |
%- convert Fresh-water flux (from kg/m^2/s & m/s) to [mm/d]: |
95 |
if strcmp(fldList(j),'SIfrw2oc') | strcmp(fldList(j),'SIfrwAtm'), facM=86400.; end |
96 |
if strcmp(fldList(j),'EXFempmr'), facM=1000*86400.; end |
97 |
end |
98 |
if kplot(j) == 1, |
99 |
nf=nf+1; |
100 |
%if kplot(nf) == 1, |
101 |
xyp0=xyp0+xydp; |
102 |
figure(nf); set(nf,'position',[xyp0 xysp]);clf; |
103 |
ns=210; |
104 |
ns=ns+1; subplot(ns); |
105 |
jg=j; |
106 |
titv=namV(jg,:); titv=strrep(titv,'_','\_'); |
107 |
titime=sprintf('t= %4.1f d',iter(nt)*deltaT/86400); |
108 |
var=squeeze(v4d1(:,:,jg,nt)); var(find(var==misVal))=NaN; |
109 |
var(find(msk1==0))=NaN; |
110 |
var=facM*var; mnV=min(var(:)); MxV=max(var(:)); |
111 |
if MxV > mnV, |
112 |
imagesc(xc,yc,var'); set(gca,'YDir','normal'); |
113 |
ccB=[mnV MxV] + [-1 1]*(MxV-mnV)/10; caxis(ccB); change_colmap(-1); |
114 |
if strcmp(namV(jg,:),'SI_thick'), ccB=[-.1 1.1]; end |
115 |
if ccB(2) <= ccB(1), ccB=[mnV MxV] + [-1 1]*(MxV-mnV)/10; end |
116 |
caxis(ccB); change_colmap(-1); |
117 |
%contourf(xc,yc,var',14); |
118 |
BB=colorbar('EastOutside'); |
119 |
%[cs,h]=contour(yc,yc,var',cc);clabel(cs); isoline0(h); |
120 |
else fprintf(' %s , uniform = %e\n',namV(jg,:),MxV); end |
121 |
title([titexp1,' ; ',titv,' ; ',titime]); |
122 |
text(xtxt,ytxt,sprintf('min,Max= %9.5g , %9.5g', mnV, MxV)) |
123 |
if Nexp > 1, ns=ns+1; subplot(ns); |
124 |
vv2=squeeze(v4d2(:,:,jg,nt)); vv2(find(vv2==misVal))=NaN; |
125 |
var=facM*vv2-kdif*var; |
126 |
var(find(msk1==0))=NaN; |
127 |
mnV=min(var(:)); MxV=max(var(:)); |
128 |
if MxV > mnV, |
129 |
imagesc(xc,yc,var'); set(gca,'YDir','normal'); |
130 |
%- note: 2nd plot has same color-range (except if diff plot) |
131 |
if (ccB(2)-ccB(1))*(kdif-1) >= 0, ccB=[mnV MxV] + [-1 1]*(MxV-mnV)/10; end |
132 |
caxis(ccB); change_colmap(-1); |
133 |
%contourf(xc,yc,var',12); |
134 |
BB=colorbar('EastOutside'); |
135 |
%[cs,h]=contour(yc,yc,var',cc);clabel(cs); isoline0(h); |
136 |
else fprintf(' %s , uniform = %e\n',namV(jg,:),MxV); end |
137 |
if kdif == 1, titplot=['Diff: ',titexp2,' - ',titexp1]; |
138 |
else titplot=[titexp2,' ; ',titv]; end ; title(titplot); |
139 |
text(xtxt,ytxt,sprintf('min,Max= %9.5g , %9.5g', mnV, MxV)) |
140 |
else |
141 |
subplot(223); |
142 |
var=squeeze(v4d1(is,:,jg,:)); var(find(var==misVal))=NaN; |
143 |
var=facM*var; mnV=min(var(:)); MxV=max(var(:)); |
144 |
m1d=squeeze(msk1(is,:)); [J]=find(m1d==0); |
145 |
for n=1:Nit, |
146 |
jt=1+rem(n-1,length(clin)); |
147 |
if n > length(clin); ccln=[clin(jt:jt),'--']; else ccln=[clin(jt:jt),'-'];end |
148 |
var(J,n)=NaN; |
149 |
plot(yc,var(:,n),ccln); |
150 |
if n==1, hold on; end |
151 |
end |
152 |
hold off; AA=axis; axis([0 ny AA(3:4)]); |
153 |
grid |
154 |
titplot=[titexp1,' ; ',titv,' ; is=',int2str(is)]; |
155 |
title(titplot); |
156 |
subplot(224); |
157 |
var=squeeze(v4d1(:,js,jg,:)); var(find(var==misVal))=NaN; |
158 |
var=facM*var; mnV=min(var(:)); MxV=max(var(:)); |
159 |
m1d=squeeze(msk1(:,js)); [J]=find(m1d==0); |
160 |
for n=1:Nit, |
161 |
jt=1+rem(n-1,length(clin)); |
162 |
if n > length(clin); ccln=[clin(jt:jt),'--']; else ccln=[clin(jt:jt),'-'];end |
163 |
var(J,n)=NaN; |
164 |
plot(xc,var(:,n),ccln); |
165 |
if n==1, hold on; end |
166 |
end |
167 |
hold off; |
168 |
grid |
169 |
titplot=[titexp1,' ; ',titv,' ; js=',int2str(js)]; |
170 |
title(titplot); |
171 |
end |
172 |
put_date; |
173 |
end |
174 |
end |
175 |
|
176 |
return |