source: trunk/ToBeReviewed/GRILLE/t2v.pro @ 13

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

upgrade of GRILLE/Utilities according to cerbere.lodyc.jussieu.fr: /usr/home/smasson/SAXO_RD/ : files

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.4 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME:t2v
6;
7; PURPOSE:permet de passer un champs se rapportant a la grille T sur
8; la grille V, grace a la moyenne: res = 0.5*(res + shift(res, 0, -1))
9;     
10;
11; CATEGORY:grille
12;
13; CALLING SEQUENCE:res=t2v(tab)
14;
15; INPUTS:tab, un tableau 2, 3 ou 4d
16;
17; KEYWORD PARAMETERS:
18;
19; OUTPUTS:res, un tableau 2, 3 ou 4d
20;
21; COMMON BLOCKS:common.pro
22;
23; SIDE EFFECTS:force les parametres du zoom sur la grille V a etre
24; les memes que ceux sur la grille T.
25;
26; RESTRICTIONS:les points qui ne peuvent etre calcules sont mis a la
27; valeur NaN consacree par IDL: !values.f_nan
28;
29; EXAMPLE:
30;
31; MODIFICATION HISTORY:Marina Levy
32;                      Sebastien Masson (smasson@lodyc.jussieu.fr):
33;                      inspection des traveuax finis. 5/6/2000
34;
35;-
36;------------------------------------------------------------
37;------------------------------------------------------------
38;------------------------------------------------------------
39FUNCTION t2v, temp
40;---------------------------------------------------------
41@cm_4mesh
42@cm_4data
43@cm_4cal
44  IF NOT keyword_set(key_forgetold) THEN BEGIN
45@updatenew
46  ENDIF
47;---------------------------------------------------------
48   res = temp
49
50;on force nxt=nxv, etc ...
51   firstxv = firstxt
52   lastxv = lastxt
53   firstyv = firstyt
54   lastyv = lastyt
55   nxv = nxt
56   nyv = nyt
57   vargrid = 'V'
58   if NOT keyword_set(valmask) then valmask = 1e20
59   lat1 = gphit[0, firstyt]
60   lat2 = gphiv[0, lastyv]
61
62; cas sur la taille du tableau et application
63   taille = size(temp)
64   CASE taille[0] OF
65      1: res = -1
66      2: BEGIN
67         case 1 of
68            taille[1] eq nxt and taille[2] eq nyt:
69            taille[1] eq jpi and taille[2] eq jpj: $
70             res=res[firstxt:lastxt, firstyt:lastyt]
71            else: $
72             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
73         endcase
74         mask = tmask[firstxt:lastxt, firstyt:lastyt, 0]
75         terre = where(mask EQ 0)
76         IF terre[0] NE -1 THEN res[terre] = !values.f_nan
77         res = 0.5*(res + shift(res, 0, -1))
78         res[*, nyt-1] = !values.f_nan
79         mask = (vmask())[firstxt:lastxt, firstyt:lastyt, 0]
80         terre = where(mask EQ 0)
81         IF terre[0] NE -1 THEN res[terre] = valmask
82      END
83      3: BEGIN
84         case 1 of
85            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ nzt:
86            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpk: $
87             res=res[*, *, firstzt:lastzt]
88            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpt:
89            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk: $
90             res=res[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
91            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpt: $
92             res=res[firstxt:lastxt, firstyt:lastyt, *]
93            else: $
94             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
95         ENDCASE
96         if taille[3] EQ jpt then begin
97            mask = tmask[firstxt:lastxt, firstyt:lastyt, lastzt*(nzt NE jpk)]
98            mask = temporary(mask[*])#replicate(1, jpt)
99            mask = reform(mask, nxt, nyt, jpt, /over)
100         ENDIF ELSE mask = tmask[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
101         terre = where(temporary(mask) EQ 0)
102         IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan
103         res = 0.5*(res + shift(res, 0, -1, 0))
104         res[*, nyt-1, *] = !values.f_nan
105         if taille[3] EQ jpt then BEGIN
106            mask = (vmask())[firstxt:lastxt, firstyt:lastyt, lastzt*(nzt NE jpk)]
107            mask = temporary(mask[*])#replicate(1, jpt)
108            mask = reform(mask, nxt, nyt, jpt, /over)
109         ENDIF ELSE mask = (vmask())[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
110         terre = where(temporary(mask) EQ 0)
111         IF terre[0] NE -1 THEN res[temporary(terre)] = valmask
112      END
113      4: BEGIN
114         case 1 of
115            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ nzt AND taille[4] EQ jpt:
116            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpk AND taille[4] EQ jpt: $
117             res=res[*, *, firstzt:lastzt, *]
118            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk AND taille[4] EQ jpt: $
119             res=res[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt, *]
120            else: $
121             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
122         ENDCASE
123         mask = tmask[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
124         mask = temporary(mask[*])#replicate(1, jpt)
125         mask = reform(mask, nxt, nyt, nzt, jpt, /over)
126         terre = where(temporary(mask) EQ 0)
127         IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan
128         res = 0.5*(res + shift(res, 0, -1, 0, 0))
129         res[*, nyt-1, *, *] = !values.f_nan
130         mask = (vmask())[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
131         mask = temporary(mask[*])#replicate(1, jpt)
132         mask = reform(mask, nxt, nyt, nzt, jpt, /over)
133         terre = where(temporary(mask) EQ 0)
134         IF terre[0] NE -1 THEN res[temporary(terre)] = valmask
135      END
136    ENDCASE
137
138  IF NOT keyword_set(key_forgetold) THEN BEGIN
139   @updateold
140  ENDIF
141
142   return, res
143END
144
Note: See TracBrowser for help on using the repository browser.