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