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

Last change on this file since 163 was 163, checked in by navarro, 18 years ago

header improvements : type of parameters and keywords, default values, spell checking + idldoc assistant (IDL online_help)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 5.3 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5;
6; @file_comments
7; Allows to pass a field referring to the grid T on the grid V,
8; thanks to the average res = 0.5*(res + shift(res, 0, -1))
9;
10; @categories
11; Grid
12;
13; @param TEMP {in}{required}
14; A 2, 3 or 4d array
15;
16; @returns
17; res, a 2, 3 or 4d array
18;
19; @uses
20; common.pro
21;
22; @restrictions
23; Force parameters of the zoom on the grid V to be the same as
24; those on the grid T.
25;
26; @restrictions
27; Points which can not be calculated are put at the value NaN
28; consecrated by IDL: !values.f_nan
29;
30; @history
31; From Marina Levy's programs
32; Sebastien Masson (smasson\@lodyc.jussieu.fr):
33; Validation. 5/6/2000
34;
35; @version
36; $Id$
37;
38;-
39;------------------------------------------------------------
40;------------------------------------------------------------
41;------------------------------------------------------------
42FUNCTION t2v, temp
43;---------------------------------------------------------
44;
45  compile_opt idl2, strictarrsubs
46;
47@cm_4mesh
48@cm_4data
49@cm_4cal
50  IF NOT keyword_set(key_forgetold) THEN BEGIN
51@updatenew
52  ENDIF
53;---------------------------------------------------------
54   res = temp
55
56;We force nxt=nxv, etc ...
57   firstxv = firstxt
58   lastxv = lastxt
59   firstyv = firstyt
60   lastyv = lastyt
61   nxv = nxt
62   nyv = nyt
63   vargrid = 'V'
64   if NOT keyword_set(valmask) then valmask = 1e20
65   lat1 = gphit[0, firstyt]
66   lat2 = gphiv[0, lastyv]
67
68; case on tha array's size and application
69   taille = size(temp)
70   CASE taille[0] OF
71      1: res = -1
72      2: BEGIN
73         case 1 of
74            taille[1] eq nxt and taille[2] eq nyt:
75            taille[1] eq jpi and taille[2] eq jpj: $
76             res=res[firstxt:lastxt, firstyt:lastyt]
77            else: $
78             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
79         endcase
80         mask = tmask[firstxt:lastxt, firstyt:lastyt, 0]
81         terre = where(mask EQ 0)
82         IF terre[0] NE -1 THEN res[terre] = !values.f_nan
83         res = 0.5*(res + shift(res, 0, -1))
84         res[*, nyt-1] = !values.f_nan
85         mask = (vmask())[firstxt:lastxt, firstyt:lastyt, 0]
86         terre = where(mask EQ 0)
87         IF terre[0] NE -1 THEN res[terre] = valmask
88      END
89      3: BEGIN
90         case 1 of
91            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ nzt:
92            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpk: $
93             res=res[*, *, firstzt:lastzt]
94            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpt:
95            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk: $
96             res=res[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
97            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpt: $
98             res=res[firstxt:lastxt, firstyt:lastyt, *]
99            else: $
100             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
101         ENDCASE
102         if taille[3] EQ jpt then begin
103            mask = tmask[firstxt:lastxt, firstyt:lastyt, lastzt*(nzt NE jpk)]
104            mask = temporary(mask[*])#replicate(1, jpt)
105            mask = reform(mask, nxt, nyt, jpt, /over)
106         ENDIF ELSE mask = tmask[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
107         terre = where(temporary(mask) EQ 0)
108         IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan
109         res = 0.5*(res + shift(res, 0, -1, 0))
110         res[*, nyt-1, *] = !values.f_nan
111         if taille[3] EQ jpt then BEGIN
112            mask = (vmask())[firstxt:lastxt, firstyt:lastyt, lastzt*(nzt NE jpk)]
113            mask = temporary(mask[*])#replicate(1, jpt)
114            mask = reform(mask, nxt, nyt, jpt, /over)
115         ENDIF ELSE mask = (vmask())[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
116         terre = where(temporary(mask) EQ 0)
117         IF terre[0] NE -1 THEN res[temporary(terre)] = valmask
118      END
119      4: BEGIN
120         case 1 of
121            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ nzt AND taille[4] EQ jpt:
122            taille[1] eq nxt and taille[2] eq nyt AND taille[3] EQ jpk AND taille[4] EQ jpt: $
123             res=res[*, *, firstzt:lastzt, *]
124            taille[1] eq jpi and taille[2] eq jpj AND taille[3] EQ jpk AND taille[4] EQ jpt: $
125             res=res[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt, *]
126            else: $
127             return, report('Probleme d''adequation entre les tailles du domaine et de la boite.')
128         ENDCASE
129         mask = tmask[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
130         mask = temporary(mask[*])#replicate(1, jpt)
131         mask = reform(mask, nxt, nyt, nzt, jpt, /over)
132         terre = where(temporary(mask) EQ 0)
133         IF terre[0] NE -1 THEN res[temporary(terre)] = !values.f_nan
134         res = 0.5*(res + shift(res, 0, -1, 0, 0))
135         res[*, nyt-1, *, *] = !values.f_nan
136         mask = (vmask())[firstxt:lastxt, firstyt:lastyt, firstzt:lastzt]
137         mask = temporary(mask[*])#replicate(1, jpt)
138         mask = reform(mask, nxt, nyt, nzt, jpt, /over)
139         terre = where(temporary(mask) EQ 0)
140         IF terre[0] NE -1 THEN res[temporary(terre)] = valmask
141      END
142    ENDCASE
143
144  IF NOT keyword_set(key_forgetold) THEN BEGIN
145   @updateold
146  ENDIF
147
148   return, res
149END
150
Note: See TracBrowser for help on using the repository browser.