source: trunk/SRC/ToBeReviewed/GRILLE/t2v.pro @ 114

Last change on this file since 114 was 114, checked in by smasson, 18 years ago

new compilation options (compile_opt idl2, strictarrsubs) in each routine

  • 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
RevLine 
[2]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
[13]40;---------------------------------------------------------
[114]41;
42  compile_opt idl2, strictarrsubs
43;
[13]44@cm_4mesh
45@cm_4data
46@cm_4cal
47  IF NOT keyword_set(key_forgetold) THEN BEGIN
48@updatenew
49  ENDIF
50;---------------------------------------------------------
[2]51   res = temp
52
53;on force nxt=nxv, etc ...
[13]54   firstxv = firstxt
55   lastxv = lastxt
56   firstyv = firstyt
57   lastyv = lastyt
[2]58   nxv = nxt
59   nyv = nyt
60   vargrid = 'V'
61   if NOT keyword_set(valmask) then valmask = 1e20
[13]62   lat1 = gphit[0, firstyt]
63   lat2 = gphiv[0, lastyv]
[2]64
65; cas sur la taille du tableau et application
66   taille = size(temp)
67   CASE taille[0] OF
68      1: res = -1
69      2: BEGIN
70         case 1 of
71            taille[1] eq nxt and taille[2] eq nyt:
72            taille[1] eq jpi and taille[2] eq jpj: $
[13]73             res=res[firstxt:lastxt, firstyt:lastyt]
[2]74            else: $
75             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
76         endcase
[13]77         mask = tmask[firstxt:lastxt, firstyt:lastyt, 0]
[2]78         terre = where(mask EQ 0)
79         IF terre[0] NE -1 THEN res[terre] = !values.f_nan
80         res = 0.5*(res + shift(res, 0, -1))
81         res[*, nyt-1] = !values.f_nan
[13]82         mask = (vmask())[firstxt:lastxt, firstyt:lastyt, 0]
[2]83         terre = where(mask EQ 0)
84         IF terre[0] NE -1 THEN res[terre] = valmask
85      END
86      3: BEGIN
87         case 1 of
88            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ nzt:
89            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpk: $
[13]90             res=res[*, *, firstzt:lastzt]
[2]91            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpt:
92            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk: $
[13]93             res=res[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
[2]94            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpt: $
[13]95             res=res[firstxt:lastxt, firstyt:lastyt, *]
[2]96            else: $
97             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
98         ENDCASE
99         if taille[3] EQ jpt then begin
[13]100            mask = tmask[firstxt:lastxt, firstyt:lastyt, lastzt*(nzt NE jpk)]
[2]101            mask = temporary(mask[*])#replicate(1, jpt)
102            mask = reform(mask, nxt, nyt, jpt, /over)
[13]103         ENDIF ELSE mask = tmask[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
[2]104         terre = where(temporary(mask) EQ 0)
105         IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan
106         res = 0.5*(res + shift(res, 0, -1, 0))
107         res[*, nyt-1, *] = !values.f_nan
108         if taille[3] EQ jpt then BEGIN
[13]109            mask = (vmask())[firstxt:lastxt, firstyt:lastyt, lastzt*(nzt NE jpk)]
[2]110            mask = temporary(mask[*])#replicate(1, jpt)
111            mask = reform(mask, nxt, nyt, jpt, /over)
[13]112         ENDIF ELSE mask = (vmask())[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
[2]113         terre = where(temporary(mask) EQ 0)
114         IF terre[0] NE -1 THEN res[temporary(terre)] = valmask
115      END
116      4: BEGIN
117         case 1 of
118            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ nzt AND taille[4] EQ jpt:
119            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpk AND taille[4] EQ jpt: $
[13]120             res=res[*, *, firstzt:lastzt, *]
[2]121            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk AND taille[4] EQ jpt: $
[13]122             res=res[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt, *]
[2]123            else: $
124             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
125         ENDCASE
[13]126         mask = tmask[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
[2]127         mask = temporary(mask[*])#replicate(1, jpt)
128         mask = reform(mask, nxt, nyt, nzt, jpt, /over)
129         terre = where(temporary(mask) EQ 0)
130         IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan
131         res = 0.5*(res + shift(res, 0, -1, 0, 0))
132         res[*, nyt-1, *, *] = !values.f_nan
[13]133         mask = (vmask())[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
[2]134         mask = temporary(mask[*])#replicate(1, jpt)
135         mask = reform(mask, nxt, nyt, nzt, jpt, /over)
136         terre = where(temporary(mask) EQ 0)
137         IF terre[0] NE -1 THEN res[temporary(terre)] = valmask
138      END
[13]139    ENDCASE
[2]140
[13]141  IF NOT keyword_set(key_forgetold) THEN BEGIN
142   @updateold
143  ENDIF
144
[2]145   return, res
146END
147
Note: See TracBrowser for help on using the repository browser.