source: trunk/procs/update_data.pro @ 205

Last change on this file since 205 was 205, checked in by pinsard, 14 years ago

homegenize THEN BEGIN ... ENDIF

  • Property svn:keywords set to Id
File size: 5.3 KB
Line 
1;+
2;
3; @keyword TAB
4;
5; @keyword VNAME
6;
7; @keyword BOXZOOM
8;
9; @keyword ZUNITS
10;
11; @keyword ZINVAR
12;
13; @keyword SUFFIX
14;
15; @keyword D_DIREC
16;
17; @keyword TIME_1
18;
19; @keyword TIME_2
20;
21; @keyword NO_MEAN
22;
23; @keyword _EXTRA
24;
25; @uses
26; <pro>common</pro>
27; <propost_it>com_eg</propost_it>
28;
29; @history
30; - fplod 20100119T160644Z aedon.locean-ipsl.upmc.fr (Darwin)
31;
32;   * check parameters
33;
34; @version
35; $Id$
36;
37;-
38PRO update_data $
39    , TAB=tab $
40    , VNAME=vname $
41    , BOXZOOM=boxzoom $
42    , ZUNITS=zunits $
43    , ZINVAR=zinvar $
44    , SUFFIX=suffix $
45    , D_DIREC=d_direc $
46    , TIME_1=time_1 $
47    , TIME_2=time_2 $
48    , NO_MEAN=no_mean $
49    , _EXTRA=extra
50;
51  compile_opt idl2, strictarrsubs
52;
53@common
54@com_eg
55;
56 IF debug_w THEN BEGIN
57  info = report('enter ...')
58 ENDIF
59;
60 usage='update_data' $
61    + ', TAB=tab' $
62    + ', VNAME=vname' $
63    + ', BOXZOOM=boxzoom' $
64    + ', ZUNITS=zunits' $
65    + ', ZINVAR=zinvar' $
66    + ', SUFFIX=suffix' $
67    + ', D_DIREC=d_direc' $
68    + ', TIME_1=time_1' $
69    + ', TIME_2=time_2' $
70    + ', NO_MEAN=no_mean' $
71    + ', _EXTRA=extra'
72;
73 nparam = N_PARAMS()
74 IF (nparam NE 0) THEN BEGIN
75    ras = report(['Incorrect number of arguments.' $
76          + '!C' $
77          + 'Usage : ' + usage])
78    stop
79 ENDIF
80
81   ; Perform mean over vertical levels or extract one vertical level ?
82   dim = (size(tab))[0]
83   perform_mean = vert_switch GE 1 AND zinvar EQ 1 AND NOT keyword_set(no_mean)
84
85   CASE dim OF
86
87      1: BEGIN
88         print, ' !!!! 1D case not implemented because !!!!'
89         print, ' !!!! read_ncdf cannot handle 1D data !!!!'
90      END
91
92      ;; fichier 2d : surface (n_elements(gdept) = 0 or 1)
93      2: BEGIN
94         print, '    Found ', vname, ' (2D data) from file'
95         d_direc = 'xy'
96         IF perform_mean EQ 1 THEN BEGIN
97            ; vert_mean[0] can be different from vert_mean[1] to select one level or layer
98            CASE vert_type OF
99               'z': BEGIN
100                  IF vert_mean[0] EQ vert_mean[1] THEN BEGIN
101                     suffix = ' at '+strtrim(string(long(vert_mean[0])), 2)+zunits+' '
102                  ENDIF ELSE suffix = ' at '+strtrim(string(long(vert_mean[0])), 2)+'-'+strtrim(string(long(vert_mean[1])), 2)+zunits+' '
103               END
104               'level':BEGIN ; case level (zindex)
105                  suffix = ' at '+vert_type+' '+strtrim(string(long(gdept[vert_mean[0]]+.1)), 2)+' '
106               END
107            ENDCASE
108         ENDIF
109      END
110
111      ;; fichier 3d : 2 cas = 1/ 2d espace + temps 2/ 3d espace (n_elements(gdept) > 1)
112      3: BEGIN
113         IF jpt EQ 1 THEN BEGIN
114            print, '    Found ', vname, ' (3D data) from file'
115            d_direc = 'xyz'
116            IF perform_mean EQ 1 THEN BEGIN
117               ;old_boite = [lon1, lon2, lat1, lat2, prof1, prof2]
118               print, '      Average in vertical domain ', vert_type, vert_mean
119               ;IF vert_mean[0] EQ vert_mean[1] THEN BEGIN
120               ; stop, report('vert_mean[0] cannot be equal to vert_mean[1]')
121               ; ENDIF
122               CASE vert_type OF
123                  'z': BEGIN
124                     zmean = moyenne(temporary(tab), 'z', boite = boxzoom, /NAN)
125                     suffix = ' averaged in ['+strtrim(string(long(vert_mean[0])), 2)+zunits+', '+strtrim(string(long(vert_mean[1])), 2)+zunits+']'
126                  END
127                  'level':BEGIN ; case level (zindex)
128                     zmean = moyenne(temporary(tab), 'z', boite = boxzoom, /zindex, /NAN)
129                     suffix = ' averaged in '+vert_type+' ['+strtrim(string(long(vert_mean[0])), 2)+','+strtrim(string(long(vert_mean[1])), 2)+']'
130                  END
131               ENDCASE
132               tab = temporary(zmean)
133               d_direc = 'xy'
134            ENDIF
135         ENDIF ELSE BEGIN
136            print, '    Found ', vname, ' (2D data time serie)', strcompress(string(time_1)),'-', strtrim(string(time_2), 2), ' [every ',strtrim(string(time_stride), 2), ']   from file'
137            d_direc = 'xyt'
138         ENDELSE
139      END
140
141      ;; fichier 4d : volume + temps
142      4: BEGIN
143         IF debug_w THEN BEGIN
144          print, ' jpt = ', jpt
145         ENDIF
146         IF jpt GT 1 THEN BEGIN
147            print, '    Found ', vname, ' (3D data time serie)', strcompress(string(time_1)),'-', strtrim(string(time_2), 2), '   from file'
148            d_direc = 'xyzt'
149            IF perform_mean EQ 1 THEN BEGIN
150               print, '      Average in vertical domain ', vert_type, vert_mean
151               CASE vert_type OF
152                  'z': BEGIN
153                     zmean = grossemoyenne(tab, 'z', boite = boxzoom, /NAN)
154                     suffix = ' averaged in ['+strtrim(string(long(vert_mean[0])), 2)+zunits+','+strtrim(string(long(vert_mean[1])), 2)+zunits+']'
155                  END
156                  'level': BEGIN ; case level (zindex)
157                     zmean = grossemoyenne(temporary(tab), 'z', boite = boxzoom, /zindex, /NAN)
158                     suffix = ' averaged in '+vert_type+' ['+strtrim(string(long(vert_mean[0])), 2)+','+strtrim(string(long(vert_mean[1])), 2)+']'
159                  END
160               ENDCASE
161               tab = temporary(zmean)
162               d_direc = 'xyt'
163            ENDIF
164         ENDIF
165      END
166
167      ELSE: BEGIN
168         err_mess = '  *** nc_read : ERROR dimension > 4'
169         tab = -1.0
170      END
171
172   ENDCASE
173
174   IF debug_w THEN BEGIN
175    info = report('leaving ...')
176   ENDIF
177
178END
Note: See TracBrowser for help on using the repository browser.