source: trunk/SRC/Obsolete/lect.pro @ 97

Last change on this file since 97 was 97, checked in by pinsard, 18 years ago

start to modify headers of Obsolete *.pro files for better idldoc output

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 9.6 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5;   
6; @file_comments
7;       lit les fichiers Vairmer de date1 a date2 et en sort un tableau
8;       1D, 2D ou 3D qui peut etre reutilise pour une courbe / hov / animation
9;cette fonction modifie aussi les variables globales:
10;varname: huit lettres: nom Vairmer du champ a tracer
11;vargrid:1 lettre : nom de la grille
12;varexp: trois lettres :nom de l'experience
13;
14; @obsolete
15;
16; @categories Graphics, lecture de fichier Vaimer
17;
18; @examples
19; IDL> resultat=lec('nom_Vairmer',date1,date2,'nomexp','direc',BOITE=boite)
20;
21; @param nomchamp {in}{required} nom de champ Vairmer (chaine de 8 caracteres commencant
22;                    par VO ou SO
23;         @param date1 {in}{required} date de depart de la serie temporelle a
24;         @param date2 {in}{required} date de fin (date2) de la serie temporelle a
25;             extraire
26;       @param nomexp {in}{required} nom de l' experience a lire (prefix pardefaut)
27;
28;       @param direc  {in}{required} 'x' 'y' 'z' 'xy' 'xz' 'yz' 'xyz' 'xt' 'yt' 'zt' 'xyt' 'xzt'
29;       'yzt' 'xyzt' directions selon lesquelles effectuer les moyennes
30;       (si rien n'est donne on n'effectue pas de moyenne)
31;
32;
33;
34;       @keyword boite {in} boite sur laquelle integrer (par defaut tt le domaine)
35;       @keyword  anom {in} type de fichiers ('SE','AN','') a relire pour calc une
36; anomalie 
37;         @keyword expanom {in} experience pour laquelle on veut calculer une anomalie
38; (par defaut la meme que nomexp)
39;
40; @uses common vraidate juldate
41;
42; @history Jerome Vialard (jv\@lodyc.jussieu.fr)
43; 2/7/98
44;-
45;--------------------------------------------------------------
46;--------------------------------------------------------------
47;--------------------------------------------------------------
48;                  1      2      3    4      5       
49function lect, nomchamp,date1,date2,nomexp,direc,BOITE=boite, $
50               ANOM=anom,EXPANOM=expanom
51;,REPEAT=repeat
52@common
53   tempsun = systime(1)         ; pour key_performance
54;
55   nomchamp = strupcase(nomchamp)
56   date1=vraidate(date1)
57   date2=vraidate(date2)
58;
59   dim=string(format='(a2)',nomchamp)
60;
61;------------------------------------------------------------
62; specification de la date et de l'experience
63;------------------------------------------------------------
64;
65   if fictype(date1) ne fictype(date2) then $
66    return, report('Les deux dates doivent correspondre au meme type de fic vairmer')
67   fictyp = fictype(date1)
68;-------------------------------------------------------------
69; creation du nom du fichier
70;-------------------------------------------------------------
71   if n_elements(nomexp) EQ 0 then nomexp = prefix
72   ficname=iodir+nomchamp+'.'+strcompress(date1,/remove_all)
73   ficname=ficname +'-'+fictyp+'-'+strcompress(date2,/remove_all)+'.'+nomexp
74   if (keyword_set(anom)) then ficname=ficname +'.'+anom
75   if (keyword_set(expanom)) then ficname=ficname +'-'+expanom
76   case n_elements(boite) of
77      4 : box = strcompress(string(format='(i4,"_",i4,"_",i4,"_",i4)',boite) $
78                            ,/remove_all)
79      6 : box = strcompress(string(format='(i4,"_",i4,"_",i4,"_",i4,"_",i4,"_",i4)',boite),/remove_all)
80      else: box= strcompress(string(format='(i4,"_",i4,"_",i4,"_",i4,"_",i4,"_",i4)',[lon1,lon2,lat1,lat2,prof1,prof2]),/remove_all)
81   ENDCASE
82   if n_elements(direc) EQ 0 then direc = ''
83   ficname=ficname+'.'+box+'.'+direc+'.hovdat'
84;-------------------------------------------------------------
85; Est ce que le fichier de hovmoller existe ?
86;-------------------------------------------------------------
87;
88; structure du fichier :
89; jpt (valeur de la dim temporelle), dimtableau (dimension du tableau)
90; dimttab[0], dimttab[1], ... (valeur des dim )
91; time (axe des tps), ttab (tableau a lire)
92; def du domaine (lon1,lon2,...  ,prof1,prof2)
93;
94   get_lun, numlec
95   openr, numlec, ficname, /get_lun,ERROR=err, /swap_if_little_endian
96   if (err eq 0) then begin
97      jpt = long(1)
98      dimtableau = long(1)
99      readu, numlec, jpt,dimtableau
100      case dimtableau of
101         1 : begin
102            n1 = long(1)
103            readu, numlec,n1
104            ttab = fltarr(n1)
105         end
106         2 : begin
107            n1 = long(1)
108            n2 = long(1)
109            readu, numlec,n1,n2
110            ttab = fltarr(n1,n2)
111         end
112         3 : begin
113            n1 = long(1)
114            n2 = long(1)
115            n3 = long(1)
116            readu, numlec,n1,n2,n3
117            ttab = fltarr(n1,n2,n3)
118         end
119      endcase
120      time = lonarr(jpt)
121; lecture axe des tps et du tableau
122      readu, numlec,time, ttab
123      newboite = fltarr(6)
124; lecture du domaine
125      readu, numlec,newboite
126      domdef, newboite
127; lecture info complementaire : nom du champs, de l'experience
128      varname='aaaaaaaa'
129      readu, numlec, varname
130      vargrid='a'
131      readu, numlec, vargrid
132      varexp='aaa'
133      readu, numlec, varexp
134;
135      close, numlec
136      free_lun, numlec
137      return, ttab
138   ENDIF
139   close, numlec
140   free_lun, numlec
141;-------------------------------------------------------------
142; changement de domaine
143;-------------------------------------------------------------
144   if keyword_set(boite) then BEGIN
145      Case 1 Of
146         N_Elements(Boite) Eq 1:bte=[lon1, lon2, lat1, lat2, 0.,boite[0]]
147         N_Elements(Boite) Eq 2:bte=[lon1, lon2, lat1, lat2, boite[0],boite[1]]
148         N_Elements(Boite) Eq 4:bte=[Boite, prof1, prof2]
149         N_Elements(Boite) Eq 5:bte=[Boite[0:3], 0, Boite[4]]
150         N_Elements(Boite) Eq 6:bte=Boite
151         Else: return, report('Mauvaise Definition de Boite')
152      endcase
153      oldboite = [lon1, lon2, lat1, lat2, prof1, prof2]
154      domdef, bte
155   ENDIF
156;-------------------------------------------------------------
157;   Boucle de lecture des fichiers
158;-------------------------------------------------------------
159   case fictyp of
160      'DA' : dec = 0.
161      'MO' : dec = 14.
162      'SE' : dec = 14.
163      'AN' : dec = 182.
164   endcase
165;initialisation des variables associees au tps
166   time = lonarr(jptmax)
167   jpt = 0
168   vdat = date1
169; debut de la boucle
170   while (vdat le date2) do begin
171;---------------------------------------------------------------
172; lecture du fichier a la date vdat (vairmer)
173;---------------------------------------------------------------
174      tab = lec(nomchamp,vdat,nomexp,ANOM=anom,EXPANOM=expanom)
175;---------------------------------------------------------------
176; attribution du mask et des tableaux de longitude et latitude...
177;---------------------------------------------------------------
178      if jpt EQ 0 THEN grille, mask, glam, gphi, gdep, nx, ny,nz,premierx,premiery,premierz,dernierx, derniery, dernierz
179;---------------------------------------------------------------
180      if (n_elements(tab) eq 1 and tab[0] eq -1) then begin
181         goto, incrdate
182      endif else begin
183         jpt = jpt + 1
184         if (jpt gt jptmax) then return, report('lect : augmenter jptmax')
185      endelse
186;--------------------------------------------------------
187; Moyenne du champs tab
188;--------------------------------------------------------
189      IF n_params() EQ 5 THEN if direc NE '' then BEGIN
190         if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN BEGIN
191            if string(format='(a2)',nomchamp) EQ 'SO' then tab = reform(tab, nx, ny, /over) $
192            ELSE tab = reform(tab, nx, ny, nz, /over)
193         ENDIF
194         tab = moyenne(tab,direc)
195      endif
196      if (jpt eq 1) then begin
197         ttab = tab
198      endif else BEGIN
199         ttab = colle(ttab, tab, (size(tab))[0]+1 )
200      endelse
201      time[jpt-1] = juldate(vdat)+dec
202;--------------------------------------------------------
203; Incrementation de la date
204;--------------------------------------------------------
205      incrdate :
206      case fictyp of
207         'DA' : caldat,juldate(vdat)+1,month,day,year
208         'MO' : begin
209            caldat,julday(month,1,year)+jourdsmois(),month,day,year
210            day=0
211         end
212         'SE' : month=month+1
213         'AN' : year=year+1
214      endcase
215;------------------------------------------------------------
216;   Fin de boucle de lecture des fichiers
217;------------------------------------------------------------
218      vdat=long(10000)*year+long(100)*month+day
219   ENDWHILE
220   if ttab[0] EQ -1 then return, report('Aucun fichier n''a ete lu!')
221;------------------------------------------------------------
222;   Ecriture du fichier
223;------------------------------------------------------------
224   get_lun, numlec
225   openw, numlec, ficname, /get_lun, /swap_if_little_endian
226   taille = size(ttab)
227   writeu, numlec, long(jpt),long(taille[0])
228   case taille(0) of
229      1 : writeu, numlec,long(taille[1])
230      2 : writeu, numlec,long(taille[1]),long(taille[2])
231      3 : writeu, numlec,long(taille[1]),long(taille[2]),long(taille[3])
232   endcase
233   writeu, numlec,long(time[0:jpt-1]), ttab
234   writeu, numlec,float([lon1, lon2, lat1, lat2, prof1, prof2])
235; ecriture info complementaire : nom du champs, de l'experience
236   writeu, numlec, strmid(varname,0,8)
237   writeu, numlec, strmid(vargrid,0,1)
238   writeu, numlec, strmid(varexp,0,3)
239;
240   close, numlec
241   free_lun, numlec
242;-------------------------------------------------------
243;if keyword_set(repeat) then begin
244;   jpt = jpt * repeat
245;   if (jpt gt jptmax) then begin
246;     print, 'lect : augmenter jptmax'
247;     goto, fini
248;   endif
249;   tabadd = ttab
250;   ti
251;endif
252;--------------------------------------------------------
253   if n_elements(oldboite) NE 0 then domdef,  oldboite
254;
255   close, /all
256;
257   IF keyword_set(key_performance) THEN print, 'temps lect', systime(1)-tempsun
258;
259   return, ttab
260
261end
262
263
264
265
Note: See TracBrowser for help on using the repository browser.