1 | close all |
---|
2 | clear all |
---|
3 | indir='../exp_hr/'; |
---|
4 | %indir='../exp_twin_aviso/'; |
---|
5 | %indir='../../code_leila/altifloat/obs_float/'; |
---|
6 | %indir='../obs_float/'; |
---|
7 | %ut=load([ indir 'uzero.dat']); |
---|
8 | %vt=load([ indir 'vzero.dat']); |
---|
9 | robs=load([ indir 'obs_jum_cut_18.dat']); |
---|
10 | rsim=load([ indir 'rfloat_total_jum1.dat']); |
---|
11 | uvb=load([ indir 'uv_back_aviso_0901_0902_sp_t2.dat']); |
---|
12 | uvt=load([ indir 'uv_truthdan_0901_0903_lin_t2.dat']); |
---|
13 | uvr=load([indir 'uv_tot_jum1.dat']); |
---|
14 | uvgeo=load([indir 'uv_geos_jum1.dat']); |
---|
15 | meshg=load([indir 'meshgrid_aviso_t2.dat']); |
---|
16 | Div_ana_file=[indir 'Div_ana.dat']; |
---|
17 | Div_fg_file=[indir 'Div_fg.dat']; |
---|
18 | |
---|
19 | %drifterdir='../altifloat/'; |
---|
20 | %fname={'a300234011043340.mat','a300234011120770.mat','a300234011249440.mat'}; |
---|
21 | %X1=ut(:,end-3); |
---|
22 | %Y1=ut(:,end-2); |
---|
23 | iech=1; |
---|
24 | jech=1; |
---|
25 | LIM=[34.5 36 32.5 35]; |
---|
26 | %Format : t/s, ilon, ilat, val |
---|
27 | |
---|
28 | %nlon=87; |
---|
29 | %nlat=58; |
---|
30 | lon=unique(meshg(:,1)); |
---|
31 | lat=unique(meshg(:,2)); |
---|
32 | nlon=length(lon); |
---|
33 | nlat=length(lat); |
---|
34 | |
---|
35 | [Lon,Lat]=meshgrid(lon',lat); |
---|
36 | |
---|
37 | %X1=X1+2; |
---|
38 | %Y1=Y1+2 |
---|
39 | |
---|
40 | %Ut=reshape(ut(:,end),nlat,nlon); |
---|
41 | %Vt=reshape(vt(:,end),nlat,nlon); |
---|
42 | |
---|
43 | |
---|
44 | |
---|
45 | nfloat=length(unique(robs(:,2))); |
---|
46 | |
---|
47 | |
---|
48 | |
---|
49 | %it, ilon,ilat,u,v |
---|
50 | ntime=length(unique(uvb(:,1))); |
---|
51 | Ub=reshape(uvb(:,end-1),nlat,nlon,ntime); |
---|
52 | Vb=reshape(uvb(:,end),nlat,nlon,ntime); |
---|
53 | |
---|
54 | ntime=length(unique(uvt(:,1))); |
---|
55 | Ut=reshape(uvt(:,end-1),nlat,nlon,ntime); |
---|
56 | Vt=reshape(uvt(:,end),nlat,nlon,ntime); |
---|
57 | |
---|
58 | |
---|
59 | %it, ilon,ilat,u,v |
---|
60 | ntime=length(unique(uvr(:,1))); |
---|
61 | Ur=reshape(uvr(:,end-1),nlat,nlon,ntime); |
---|
62 | Vr=reshape(uvr(:,end),nlat,nlon,ntime); |
---|
63 | |
---|
64 | if exist('uvgeo') |
---|
65 | ntime=length(unique(uvgeo(:,1))); |
---|
66 | Ugeo=reshape(uvgeo(:,end-1),nlat,nlon,ntime); |
---|
67 | Vgeo=reshape(uvgeo(:,end),nlat,nlon,ntime); |
---|
68 | end |
---|
69 | |
---|
70 | |
---|
71 | Hr=quiver(Lon(1:jech:end,1:iech:end),Lat(1:jech:end,1:iech:end),mean(Ur(1:jech:end,1:iech:end,1:end-1),3), ... |
---|
72 | mean(Vr(1:jech:end,1:iech:end,1:end-1),3),'r'); |
---|
73 | hold on |
---|
74 | Hb=quiver(Lon(1:jech:end,1:iech:end),Lat(1:jech:end,1:iech:end),mean(Ub(1:jech:end,1:iech:end,1:end-1),3),mean(Vb(1:jech:end,1:iech:end,1:end-1),3),'b'); |
---|
75 | |
---|
76 | %Ht=quiver(Ut,Vt,'g'); |
---|
77 | |
---|
78 | |
---|
79 | for j=1:nfloat |
---|
80 | |
---|
81 | |
---|
82 | |
---|
83 | rfloat=rsim(rsim(:,2)==j-1&rsim(:,end)>0,[end-1 end]); |
---|
84 | rfloat_lon=interp1(1:nlon,lon,rfloat(:,2)+1); |
---|
85 | rfloat_lat=interp1(1:nlat,lat',rfloat(:,1)+1); |
---|
86 | Hsim=plot(rfloat_lon,rfloat_lat,'.-r'); |
---|
87 | rfloat=robs(robs(:,2)==j-1&robs(:,end)>0,[end-1 end]); |
---|
88 | rfloat_lon=interp1(1:nlon,lon,rfloat(:,2)+1); |
---|
89 | rfloat_lat=interp1(1:nlat,lat',rfloat(:,1)+1); |
---|
90 | Hobs=plot(rfloat_lon,rfloat_lat,'.-m'); |
---|
91 | |
---|
92 | % plot(rfloat(:,2)+1,rfloat(:,1)+1,'.-m'); |
---|
93 | |
---|
94 | % Hreal=plot(data.lon(1:4),data.lat(1:4),'.-k') |
---|
95 | |
---|
96 | end |
---|
97 | |
---|
98 | |
---|
99 | Ht=quiver(Lon(1:jech:end,1:iech:end),Lat(1:jech:end,1:iech:end),mean(Ut(1:jech:end,1:iech:end,1:end-1),3),mean(Vt(1:jech:end,1:iech:end,1:end-1),3),'m'); |
---|
100 | axis(LIM); |
---|
101 | |
---|
102 | |
---|
103 | |
---|
104 | %Ajout des trajectoires réelles |
---|
105 | |
---|
106 | |
---|
107 | |
---|
108 | %legend([Hb Hr],'background','retrieved','Location','SouthEast'); |
---|
109 | legend([Hb Hr Ht],'background.','retrieved','truth','Location','SouthEast'); |
---|
110 | |
---|
111 | %print -dpng ../exp_forw_dan/simu_drifter_dan.png |
---|
112 | |
---|
113 | |
---|
114 | if (false) |
---|
115 | delta_b=sqrt(mean((Ut(:,:,1:end-1)-Ub(:,:,1:end-1)),3).^2+mean((Vt(:,:,1:end-1)-Vb(:,:,1:end-1)),3).^2); |
---|
116 | delta_r=sqrt(mean((Ut(:,:,1:end-1)-Ur(:,:,1:end-1)),3).^2+mean((Vt(:,:,1:end-1)-Vr(:,:,1:end-1)),3).^2); |
---|
117 | delta_inc=sqrt(mean((Ub(:,:,1:end-1)-Ur(:,:,1:end-1)),3).^2+mean((Vb(:,:,1:end-1)-Vr(:,:,1:end-1)),3).^2); |
---|
118 | |
---|
119 | cscale=[0 5e-4]; |
---|
120 | |
---|
121 | figure(2) |
---|
122 | subplot(2,2,1) |
---|
123 | imagesc(lon,lat,delta_b,cscale); |
---|
124 | axis xy;axis(LIM); |
---|
125 | hold on |
---|
126 | for j=1:3 |
---|
127 | data= load([drifterdir fname{j}]); |
---|
128 | rfloat=robs(robs(:,2)==j-1&robs(:,end)>0,[end-1 end]); |
---|
129 | rfloat_lon=interp1(1:nlon,lon,rfloat(:,2)+1); |
---|
130 | rfloat_lat=interp1(1:nlat,lat',rfloat(:,1)+1); |
---|
131 | plot([data.lon(1);rfloat_lon],[data.lat(1);rfloat_lat],'o-m'); |
---|
132 | end |
---|
133 | title('Backround error'); |
---|
134 | |
---|
135 | |
---|
136 | subplot(2,2,2) |
---|
137 | imagesc(lon,lat,delta_r,cscale); |
---|
138 | axis xy;axis(LIM); |
---|
139 | hold on |
---|
140 | for j=1:3 |
---|
141 | data= load([drifterdir fname{j}]); |
---|
142 | rfloat=robs(robs(:,2)==j-1&robs(:,end)>0,[end-1 end]); |
---|
143 | rfloat_lon=interp1(1:nlon,lon,rfloat(:,2)+1); |
---|
144 | rfloat_lat=interp1(1:nlat,lat',rfloat(:,1)+1); |
---|
145 | plot([data.lon(1);rfloat_lon],[data.lat(1);rfloat_lat],'o-m'); |
---|
146 | end |
---|
147 | |
---|
148 | title('Analysis error'); |
---|
149 | |
---|
150 | |
---|
151 | |
---|
152 | subplot(2,2,4) |
---|
153 | imagesc(lon,lat,delta_inc); |
---|
154 | axis xy;axis(LIM); |
---|
155 | colorbar |
---|
156 | hold on |
---|
157 | for j=1:3 |
---|
158 | data= load([drifterdir fname{j}]); |
---|
159 | rfloat=robs(robs(:,2)==j-1&robs(:,end)>0,[end-1 end]); |
---|
160 | rfloat_lon=interp1(1:nlon,lon,rfloat(:,2)+1); |
---|
161 | rfloat_lat=interp1(1:nlat,lat',rfloat(:,1)+1); |
---|
162 | plot([data.lon(1);rfloat_lon],[data.lat(1);rfloat_lat],'o-m'); |
---|
163 | end |
---|
164 | title('Increment'); |
---|
165 | |
---|
166 | |
---|
167 | %print -f1 -dpng ../exp_forw_dan/twin_exp_uv_field.png |
---|
168 | %print -f2 -dpng ../exp_forw_dan/twin_exp_errors.png |
---|
169 | end |
---|
170 | |
---|
171 | |
---|
172 | %% Erreur le long du trajet |
---|
173 | if(false) |
---|
174 | Id=0; |
---|
175 | for id=Id |
---|
176 | figure(5+id) |
---|
177 | I=find(robs(:,2)==id-1); |
---|
178 | Xq=robs(I,end)+1; |
---|
179 | Yq=robs(I,end-1)+1; |
---|
180 | Tq=robs(I,1)+1; |
---|
181 | |
---|
182 | err_b=interp3(1:nlon,1:nlat,1:ntime,delta_b,Xq,Yq,Tq); |
---|
183 | err_r=interp3(1:nlon,1:nlat,1:ntime,delta_r,Xq,Yq,Tq); |
---|
184 | incr=interp3(1:nlon,1:nlat,1:ntime,delta_inc,Xq,Yq,Tq); |
---|
185 | end %id |
---|
186 | end %if false |
---|
187 | |
---|
188 | %% Divergence |
---|
189 | Div_ana=load(Div_ana_file); |
---|
190 | Div_fg=load(Div_fg_file); |
---|
191 | |
---|
192 | Div2_ana=reshape(Div_ana(:,end),nlat,nlon,ntime-1); |
---|
193 | Div2_fg=reshape(Div_fg(:,end),nlat,nlon,ntime-1); |
---|
194 | |
---|
195 | figure(3) |
---|
196 | subplot(3,1,1) |
---|
197 | imagesc(lon,lat,mean(Div2_fg,3),[-2 2]*1e-5); |
---|
198 | axis xy; |
---|
199 | axis(LIM); |
---|
200 | title('Mean divergence Background'); |
---|
201 | colorbar |
---|
202 | |
---|
203 | |
---|
204 | figure(3) |
---|
205 | subplot(3,1,3) |
---|
206 | imagesc(lon,lat,mean(Div2_ana,3),[-2 2]*1e-5); |
---|
207 | axis xy; |
---|
208 | axis(LIM); |
---|
209 | title('Mean divergence Analyse'); |
---|
210 | colorbar |
---|
211 | |
---|
212 | subplot(3,1,2); |
---|
213 | imagesc(lon,lat,mean(Div2_ana,3)-mean(Div2_fg,3),[-2 2]*1e-5); |
---|
214 | axis xy; |
---|
215 | axis(LIM); |
---|
216 | title('Mean difference'); |
---|
217 | colorbar |
---|