source: trunk/GRILLE/t2v.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.3 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@common
41   res = temp
42
43;on force nxt=nxv, etc ...
44   premierxv = premierxt
45   dernierxv = dernierxt
46   premieryv = premieryt
47   dernieryv = dernieryt
48   nxv = nxt
49   nyv = nyt
50   vargrid = 'V'
51   if NOT keyword_set(valmask) then valmask = 1e20
52   lat1 = gphit[0, premieryt]
53   lat2 = gphiv[0, dernieryv]
54
55; cas sur la taille du tableau et application
56   taille = size(temp)
57   CASE taille[0] OF
58      1: res = -1
59      2: BEGIN
60         case 1 of
61            taille[1] eq nxt and taille[2] eq nyt:
62            taille[1] eq jpi and taille[2] eq jpj: $
63             res=res[premierxt:dernierxt, premieryt:dernieryt]
64            else: $
65             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
66         endcase
67         mask = tmask[premierxt:dernierxt, premieryt:dernieryt, 0]
68         terre = where(mask EQ 0)
69         IF terre[0] NE -1 THEN res[terre] = !values.f_nan
70         res = 0.5*(res + shift(res, 0, -1))
71         res[*, nyt-1] = !values.f_nan
72         mask = (vmask())[premierxt:dernierxt, premieryt:dernieryt, 0]
73         terre = where(mask EQ 0)
74         IF terre[0] NE -1 THEN res[terre] = valmask
75      END
76      3: BEGIN
77         case 1 of
78            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ nzt:
79            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpk: $
80             res=res[*, *, premierzt:dernierzt]
81            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpt:
82            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk: $
83             res=res[premierxt:dernierxt, premieryt:dernieryt, premierzt:dernierzt]
84            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpt: $
85             res=res[premierxt:dernierxt, premieryt:dernieryt, *]
86            else: $
87             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
88         ENDCASE
89         if taille[3] EQ jpt then begin
90            mask = tmask[premierxt:dernierxt, premieryt:dernieryt, dernierzt*(nzt NE jpk)]
91            mask = temporary(mask[*])#replicate(1, jpt)
92            mask = reform(mask, nxt, nyt, jpt, /over)
93         ENDIF ELSE mask = tmask[premierxt:dernierxt, premieryt:dernieryt, premierzt:dernierzt]
94         terre = where(temporary(mask) EQ 0)
95         IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan
96         res = 0.5*(res + shift(res, 0, -1, 0))
97         res[*, nyt-1, *] = !values.f_nan
98         if taille[3] EQ jpt then BEGIN
99            mask = (vmask())[premierxt:dernierxt, premieryt:dernieryt, dernierzt*(nzt NE jpk)]
100            mask = temporary(mask[*])#replicate(1, jpt)
101            mask = reform(mask, nxt, nyt, jpt, /over)
102         ENDIF ELSE mask = (vmask())[premierxt:dernierxt, premieryt:dernieryt, premierzt:dernierzt]
103         terre = where(temporary(mask) EQ 0)
104         IF terre[0] NE -1 THEN res[temporary(terre)] = valmask
105      END
106      4: BEGIN
107         case 1 of
108            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ nzt AND taille[4] EQ jpt:
109            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpk AND taille[4] EQ jpt: $
110             res=res[*, *, premierzt:dernierzt, *]
111            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk AND taille[4] EQ jpt: $
112             res=res[premierxt:dernierxt, premieryt:dernieryt, premierzt:dernierzt, *]
113            else: $
114             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
115         ENDCASE
116         mask = tmask[premierxt:dernierxt, premieryt:dernieryt, premierzt:dernierzt]
117         mask = temporary(mask[*])#replicate(1, jpt)
118         mask = reform(mask, nxt, nyt, nzt, jpt, /over)
119         terre = where(temporary(mask) EQ 0)
120         IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan
121         res = 0.5*(res + shift(res, 0, -1, 0, 0))
122         res[*, nyt-1, *, *] = !values.f_nan
123         mask = (vmask())[premierxt:dernierxt, premieryt:dernieryt, premierzt:dernierzt]
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)] = valmask
128      END
129   endcase
130
131   return, res
132END
133
Note: See TracBrowser for help on using the repository browser.