source: trunk/src/interpol_correc.pro @ 560

Last change on this file since 560 was 560, checked in by lelod, 12 years ago

update correction nadir a5

  • Property svn:keywords set to Id URL
File size: 9.1 KB
Line 
1;+
2;
3; .. _interpol_correc.pro:
4;
5; ===================
6; interpol_correc.pro
7; ===================
8;
9; DESCRIPTION
10; ===========
11;
12; interpolation des tableaux de correction amsub (calcules sur
13; echantillonnage amsua) sur les 90 points de la fauchee amsub
14;
15; read :file:`${PROJECT}/src/dataref_amsu/CORR_[LAND|SEA]_AMSU[AB]_JUIL2006.DAT`
16; containing correction for land and sea. ++ ref. algo fatima karbou
17;
18; .. only:: man
19;
20;    Figure is visible on PDF and HTML documents only.
21;
22; .. only:: html or latex
23;
24;     .. graphviz::
25;
26;        digraph interpol_correc {
27;
28;           amsu_b_cor_land [shape=diamond,fontname=Courier,label="${PROJECT}/src/dataref_amsu/CORR_LAND_AMSUB_JUIL2006.DAT"];
29;           amsu_b_cor_sea [shape=diamond,fontname=Courier,label="${PROJECT}/src/dataref_amsu/CORR_SEA_AMSUB_JUIL2006.DAT"];
30;
31;           interpol_correc [shape=box,
32;           fontname=Courier,
33;           color=blue,
34;           URL="http://forge.ipsl.jussieu.fr/varamma/browser/trunk/src/interpol_correc.pro",
35;           label="${PROJECT}/src/interpol_correc.pro"];
36;
37;           {amsu_b_cor_land amsu_b_cor_sea} -> {interpol_correc};
38;
39;           }
40;
41;
42; SEE ALSO
43; ========
44;
45; :ref:`data_amsu`
46;
47; Called by :ref:`correct_nadir_amsu.pro`
48;
49; EXAMPLES
50; ========
51;
52; ::
53;
54;    interpol_correc,cor_lb,cor_sb
55;    print, cor_lb
56;    print, cor_sb
57;
58;
59; TODO
60; ====
61;
62; on peut changer le codage en dur des fauchees ou demi-fauchees, mais
63; programme adapte a AMSUA et AMSUB, pas MHS (90 points, mais fauchee
64; un peu plus large)
65;
66; utiliser ce programme pour la correction nadir pour amsua et
67; amsub, car peut retourner la fonction de correction et la taille des
68; EFOV (tache au sol effective)
69;
70; exit with error status if wrong parameter
71;
72; coding rules
73;
74; hard coded information
75;
76; EVOLUTIONS
77; ==========
78;
79; - lelod 20120525
80;
81; analyse de la correction nadir : refonte et calcul par satellite
82; avec adaptation à la region choisie (Afrique de l'ouest)
83; changement a faire dans extract_amsua.pro
84; $Id$
85;
86; $URL$
87;
88; - fplod 20120416
89;
90;   * correction for correction reading if a5 vs a
91;
92; - fplod 20120106
93;
94;   * reprise des modifs lelod : changement de localisation des fichiers de correction
95;
96; - lelod 20111209
97;
98;   * modif organisation avec separation des traitements un seul canal traite
99;
100; - lelod 20111019
101;
102;   * fonction pixelsize fait le calcul des tailles des taches au sol a et
103;     b, et ressort le tableau correspondant sur la fauchee
104;     appelé en début de interpol
105;
106; - fplod 20110810T084245Z aedon.locean-ipsl.upmc.fr (Darwin)
107;
108;   * correct_nadir_LE06 has been replaced by correct_nadir_amsu
109;
110; - pinsard 2011-05-26T15:40:51Z loholt1.ipsl.polytechnique.fr (Linux)
111;
112;   * rewrite header (scratched by ?, how ?)
113;   * add cm_project
114;
115; - fplod 20110525T083313Z aedon.locean-ipsl.upmc.fr (Darwin)
116;
117;   * header
118;
119; - lelod 2011052?
120;
121;   * creation
122;
123;-
124PRO interpol_correc,numch,nbpix,cor_l,cor_s,swath,track
125;
126@cm_project
127nomcanal=strmid(numch,0,1)
128numcanal=0
129reads, strmid(numch,1,1),numcanal,format='(i1.1)'
130
131if nomcanal eq 'a' then nbpixel=30
132if nomcanal eq 'b' then nbpixel=90
133pixelsize,pixatot,pixbtot,alongatot,alongbtot
134if nomcanal eq 'a' then begin
135   swath=pixatot
136   track=alongatot
137endif else begin
138   swath=pixbtot
139   track=alongbtot
140endelse
141
142; parametres AMSU et calcul de la fauchee
143nfova=30
144nfovb=90
145ndfova=nfova/2
146ndfovb=nfovb/2
147print,'nb points',numch,ndfova,ndfovb
148fovb=fltarr(ndfovb)
149fova=fltarr(ndfova)
150alongb=fltarr(ndfovb)
151alongab=alongbtot[ndfovb:nfovb-1] ; verifier l'intervalle!!!!!
152pixb=pixbtot[ndfovb:nfovb-1]
153alonga=alongatot[ndfova:nfova-1]
154pixa=pixatot[ndfova:nfova-1]
155;ifov nadir : diametre (km)
156ifova=48.05 & ifovb=16
157; position dans la fauchee: premier point au nadir a ifov/2
158;
159coefb=0.8
160fovb(0)=ifovb/2.
161for i=1,ndfovb-1 do fovb(i)=fovb(i-1)+coefb*(pixb(i-1)/2 +pixb(i)/2)
162fov_b=fltarr(ndfovb)
163;fov_b(44)=fovb(0)
164;for i=0,43 do  fov_b(43-i)=fov_b(44-i)+coefb*(pixb(43-i)/2 +pixb(44-i)/2)
165for i=0,ndfovb-1 do fov_b(i)=-fovb(ndfovb-1-i)
166; zone pixel : ellipse de grand axe pixb et petit axe alongb
167;
168coefa=1
169fova(0)=ifova/2.
170for i=1,ndfova-1 do fova(i)=fova(i-1)+coefa*(pixa(i-1)/2 +pixa(i)/2) ; verifier!!!
171fov_a=fltarr(ndfova)
172;fov_a(14)=fova(0)
173;for i=0,13 do fov_a(13-i)=fov_a(14-i)+coefa*(pixa(13-i)/2 +pixa(14-i)/2)
174for i=0,ndfova-1 do fov_a(i)=-fova(ndfova-1-i)
175
176
177path = project_env + '/src/dataref_amsu/'
178; lecture des fichiers d'ajustement au nadir pour AMSUA et B
179; cas amsua: noaa17 saute - lecture pour les 5 satellites utilises N15, 16,
180;                           18, 19, M02
181if nomcanal eq 'a' then begin
182   cor_l=fltarr(nfova,5)
183   cor_s=fltarr(nfova,5)
184      cor_seaa15=project_id_env+'AMSU/CORR_SEA_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_NOAA15.DAT'
185      cor_landa15=project_id_env+'AMSU/CORR_LAND_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_NOAA15.DAT'
186      cor_seaa16=project_id_env+'AMSU/CORR_SEA_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_NOAA16.DAT'
187      cor_landa16=project_id_env+'AMSU/CORR_LAND_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_NOAA16.DAT'
188      cor_seaa18=project_id_env+'AMSU/CORR_SEA_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_NOAA18.DAT'
189      cor_landa18=project_id_env+'AMSU/CORR_LAND_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_NOAA18.DAT'
190      cor_seaa19=project_id_env+'AMSU/CORR_SEA_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_NOAA19.DAT'
191      cor_landa19=project_id_env+'AMSU/CORR_LAND_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_NOAA19.DAT'
192      cor_seaM2=project_id_env+'AMSU/CORR_SEA_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_METOP.DAT'
193      cor_landM2=project_id_env+'AMSU/CORR_LAND_AMSU'+strmid(numch,1,1)+'_DataFromJune2010_Afrique_METOP.DAT'
194      listcorr_l=[cor_landa15,cor_landa16,cor_landa18,cor_landa19,cor_landM2]
195      for nosat=0,4 do begin
196         openr, lun1,listcorr_l[nosat], /get_lun, ERROR = error
197         IF (error NE 0) then begin
198            ras = report(['eee : can not open for reading '$
199                          + '!C' $
200                          + 'code : ' + !ERROR_STATE.MSG $
201                          + cor_landa])
202            STOP
203         ENDIF
204         readf, lun1, t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,$
205                t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,$
206                t21,t22,t23,t24,t25,t26,t27,t28,t29,t30
207         a=[t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,$
208            t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,$
209            t21,t22,t23,t24,t25,t26,t27,t28,t29,t30]
210         cor_l[nosat,*]=interpol(a,nfova,/lsquadratic)
211         free_lun, lun1
212      endfor
213     listcorr_s=[cor_seaa15,cor_seaa16,cor_seaa18,cor_seaa19,cor_seaM2]
214      for nosat=0,4 do begin
215         openr, lun1,listcorr_s[nosat], /get_lun, ERROR = error
216         IF (error NE 0) then begin
217            ras = report(['eee : can not open for reading '$
218                          + '!C' $
219                          + cor_seaa])
220            STOP
221         ENDIF
222      readf, lun1, t1,t2,t3,t4,t5,$
223             t6,t7,t8,t9,t10,$
224             t11,t12,t13,t14,t15,$
225             t16,t17,t18,t19,t20,$
226             t21,t22,t23,t24,t25,$
227             t26,t27,t28,t29,t30
228
229      a=[t1,t2,t3,t4,t5,$
230         t6,t7,t8,t9,t10,$
231         t11,t12,t13,t14,t15,$
232         t16,t17,t18,t19,t20,$
233         t21,t22,t23,t24,t25,$
234         t26,t27,t28,t29,t30]
235      free_lun, lun1
236         cor_s[nosat,*]=interpol(a,nfova,/lsquadratic)
237         free_lun, lun1
238      endfor
239
240endif
241
242;cas amsub
243if nomcanal eq 'b' then begin
244   cor_landb = path + 'CORR_LAND_AMSUB_JUIL2006.DAT'
245   cor_seab = path + 'CORR_SEA_AMSUB_JUIL2006.DAT'
246   cor_l=fltarr(nfovb)
247   cor_s=fltarr(nfovb)
248   openr, lun1,cor_landb, /get_lun, ERROR = error
249   IF (error NE 0) then begin
250      ras = report(['eee : can not open for reading '$
251            + '!C' $
252            + cor_landb])
253      STOP
254   ENDIF
255   for i=0, numcanal-1 do begin
256      readf, lun1, t1,t2,t3,t4,t5,$
257             t6,t7,t8,t9,t10,$
258             t11,t12,t13,t14,t15,$
259             t16,t17,t18,t19,t20,$
260             t21,t22,t23,t24,t25,$
261             t26,t27,t28,t29,t30
262
263      a=[t1,t2,t3,t4,t5,$
264         t6,t7,t8,t9,t10,$
265         t11,t12,t13,t14,t15,$
266         t16,t17,t18,t19,t20,$
267         t21,t22,t23,t24,t25,$
268         t26,t27,t28,t29,t30]
269   endfor
270                       ;interpolation
271   cor_l[ndfovb:nfovb-1]=interpol(a[ndfova:nfova-1],fova,fovb,/spline)
272   cor_l[0:ndfovb-1]=interpol(a[0:ndfova-1],fov_a,fov_b,/spline)
273
274   free_lun, lun1
275   openr, lun1,cor_seab, /get_lun, ERROR = error
276   IF (error NE 0) then begin
277      ras = report(['eee : can not open for reading '$
278            + '!C' $
279            + cor_seab])
280      STOP
281   ENDIF
282   for i=0, numcanal-1 do begin
283      readf, lun1, t1,t2,t3,t4,t5,$
284             t6,t7,t8,t9,t10,$
285             t11,t12,t13,t14,t15,$
286             t16,t17,t18,t19,t20,$
287             t21,t22,t23,t24,t25,$
288             t26,t27,t28,t29,t30
289      a=[t1,t2,t3,t4,t5,$
290         t6,t7,t8,t9,t10,$
291         t11,t12,t13,t14,t15,$
292         t16,t17,t18,t19,t20,$
293         t21,t22,t23,t24,t25,$
294         t26,t27,t28,t29,t30]
295   endfor
296                       ;interpolation
297   cor_s[ndfovb:nfovb]=interpol(a[ndfova:nfova-1],fova,fovb,/spline)
298   cor_s[0:ndfovb-1]=interpol(a[0:ndfova-1],fov_a,fov_b,/spline)
299   free_lun, lun1
300endif
301
302end
Note: See TracBrowser for help on using the repository browser.