source: trunk/procs/update_data.pro @ 164

Last change on this file since 164 was 164, checked in by pinsard, 15 years ago

set svn Id keyword on .pro files

  • Property svn:keywords set to Id
File size: 4.5 KB
Line 
1;+
2;
3; @version
4; $Id$
5;
6;-
7PRO update_data, TAB = tab, VNAME = vname, BOXZOOM = boxzoom, ZUNITS = zunits, ZINVAR = zinvar, SUFFIX = suffix, D_DIREC = d_direc, TIME_1 = time_1, TIME_2 =  time_2, NO_MEAN = no_mean, _EXTRA = ex
8
9@common
10@com_eg
11
12   IF debug_w THEN print, '   '
13   IF debug_w THEN print, '   ENTER update_data...'
14   
15   ; Perform mean over vertical levels or extract one vertical level ?
16   dim = (size(tab))[0]
17   perform_mean = vert_switch GE 1 AND zinvar EQ 1 AND NOT keyword_set(no_mean)
18
19   CASE dim OF
20     
21      1: BEGIN
22         print,  ' !!!! 1D case not implemented because !!!!'
23         print,  ' !!!! read_ncdf cannot handle 1D data !!!!'
24      END
25     
26      ;; fichier 2d : surface (n_elements(gdept) = 0 or 1)
27      2: BEGIN
28         print, '    Found ', vname, ' (2D data) from file'       
29         d_direc = 'xy'
30         IF perform_mean EQ 1 THEN BEGIN
31            ; vert_mean[0] can be different from vert_mean[1] to select one level or layer
32            CASE vert_type OF
33               'z': BEGIN
34                  IF vert_mean[0] EQ vert_mean[1] THEN BEGIN
35                     suffix = ' at '+strtrim(string(long(vert_mean(0))), 2)+zunits+' '
36                  ENDIF ELSE suffix = ' at '+strtrim(string(long(vert_mean(0))), 2)+'-'+strtrim(string(long(vert_mean(1))), 2)+zunits+' '
37               END
38               'level':BEGIN ; case level (zindex)
39                  suffix = ' at '+vert_type+' '+strtrim(string(long(gdept(vert_mean(0))+.1)), 2)+' '           
40               END
41            ENDCASE
42         ENDIF
43      END
44     
45      ;; fichier 3d : 2 cas = 1/ 2d espace + temps 2/ 3d espace (n_elements(gdept) > 1)
46      3: BEGIN
47         IF jpt EQ 1 THEN BEGIN
48            print, '    Found ', vname, ' (3D data) from file'
49            d_direc = 'xyz'
50            IF perform_mean EQ 1 THEN BEGIN
51               ;old_boite = [lon1, lon2, lat1, lat2, prof1, prof2]
52               print, '      Average in vertical domain ', vert_type, vert_mean
53               ;IF vert_mean[0] EQ vert_mean[1] THEN stop, report('vert_mean[0] cannot be equal to vert_mean[1]')
54               CASE vert_type OF
55                  'z': BEGIN
56                     zmean = moyenne(temporary(tab), 'z', boite = boxzoom, /NAN)
57                     suffix = ' averaged in ['+strtrim(string(long(vert_mean(0))), 2)+zunits+', '+strtrim(string(long(vert_mean(1))), 2)+zunits+']'
58                  END
59                  'level':BEGIN ; case level (zindex)
60                     zmean = moyenne(temporary(tab), 'z', boite = boxzoom, /zindex, /NAN)
61                     suffix = ' averaged in '+vert_type+' ['+strtrim(string(long(vert_mean(0))), 2)+','+strtrim(string(long(vert_mean(1))), 2)+']'                   
62                  END
63               ENDCASE
64               tab = temporary(zmean)
65               d_direc = 'xy'
66            ENDIF
67         ENDIF ELSE BEGIN
68            print, '    Found ', vname, ' (2D data time serie)', strcompress(string(time_1)),'-', strtrim(string(time_2), 2), ' [every ',strtrim(string(time_stride), 2), ']   from file'
69            d_direc = 'xyt'
70         ENDELSE
71      END
72     
73      ;; fichier 4d : volume + temps   
74      4: BEGIN
75         IF debug_w THEN print, ' jpt = ', jpt
76         IF jpt GT 1 THEN BEGIN
77            print, '    Found ', vname, ' (3D data time serie)', strcompress(string(time_1)),'-', strtrim(string(time_2), 2), '   from file'
78            d_direc = 'xyzt'
79            IF perform_mean EQ 1 THEN BEGIN
80               print, '      Average in vertical domain ', vert_type, vert_mean
81               CASE vert_type OF
82                  'z': BEGIN   
83                     zmean = grossemoyenne(tab, 'z', boite = boxzoom, /NAN)
84                     suffix = ' averaged in ['+strtrim(string(long(vert_mean(0))), 2)+zunits+','+strtrim(string(long(vert_mean(1))), 2)+zunits+']'
85                  END
86                  'level': BEGIN ; case level (zindex)
87                     zmean = grossemoyenne(temporary(tab), 'z', boite = boxzoom, /zindex, /NAN)
88                     suffix = ' averaged in '+vert_type+' ['+strtrim(string(long(vert_mean(0))), 2)+','+strtrim(string(long(vert_mean(1))), 2)+']'
89                  END
90               ENDCASE
91               tab = temporary(zmean)
92               d_direc = 'xyt'
93            ENDIF
94         ENDIF
95      END
96     
97      ELSE: BEGIN
98         err_mess =  '  *** nc_read : ERROR dimension > 4'
99         tab = -1.0
100      END
101     
102   ENDCASE
103
104   IF debug_w THEN print, '   ...EXIT update_data'
105   IF debug_w THEN print, '   '
106   
107END
Note: See TracBrowser for help on using the repository browser.