1 | ;+ |
---|
2 | ; |
---|
3 | ; @version |
---|
4 | ; $Id$ |
---|
5 | ; |
---|
6 | ;- |
---|
7 | PRO 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 | |
---|
107 | END |
---|