source: trunk/procs/bin_sigma.pro @ 12

Last change on this file since 12 was 2, checked in by post_it, 17 years ago

Initial import from ~/POST_IT/

File size: 4.6 KB
Line 
1PRO bin_sigma, cmd, pfildi
2
3@common
4@com_eg
5;;
6;;-------------------------------------
7;;
8;; Density bining of pfild
9;;
10;;  EG 19-2-99
11;;
12;;-------------------------------------
13;;
14;; Input :
15;; -------
16;; cmd   = command line of window
17;;
18;; Input/Output :
19;; ---------------
20;; pfild = field to bin (structure)
21;;
22;;
23;; Method :
24;; --------
25;;   a- read density
26;;   b- define density grid
27;;   c- project field     
28;;-------------------------------------
29;
30   grille,mask,glam,gphi,gdep,nx,ny,nz,firstx,firsty,firstz,lastx,lasty,lastz
31
32; a- read density and bowl [if sig_bowl=1]
33
34   file_name = pfildi.origin
35   file_nam = strmid(file_name, 0, strlen(file_name)-4)+'T.nc'
36   vargrid = 'T'
37   sig = make_eos(file_nam, '', time_1 = time1_r, time_2 = time2_r)
38   IF sig_bowl EQ 1 THEN BEGIN
39      sobwlmax = make_sobwlmax(file_nam, '', time_1 = time1_r, time_2 = time2_r)
40   ENDIF ELSE BEGIN
41      sobwlmax =  {data:0}
42   ENDELSE
43
44; b- define density grid
45
46   n_sig = (sig_max - sig_min)/sig_del + 1
47   z_sig = sig_min+findgen(n_sig)*sig_del
48
49; c- project field
50
51   CASE pfildi.name OF
52      '@@vodeptht': data_s = sig.data
53      '@@vosigvol': data_s = sig.data
54      '@@vosigthi': data_s = sig.data
55      ELSE: data_s = pfildi.data
56   ENDCASE
57   final_dim = pfildi.dim
58   IF strpos(cmd.plt, "_") NE -1 OR strpos(cmd.plt, "#") NE -1 THEN BEGIN
59      print, '    Performing density bining (assuming reduced domain)...'
60      IF cmd.var EQ '@@vosigvol' THEN BEGIN
61         print, '    (using bining3)...'
62         bining3, sig.data-1000., data_s, sobwlmax.data, sig_bowl, depth_bin, thick_bin, f_bin, bowl_bin, vol_bin, SIGMA = z_sig, DEPTH_T = gdept, DEPTH_W = gdepw, E1T = e1t, E2T = e2t, E3T = e3t, TMASK = mask
63      ENDIF ELSE BEGIN
64         print, '    (using bining2)...'
65         bining2, sig.data-1000., data_s, sobwlmax.data, sig_bowl, depth_bin, thick_bin, f_bin, bowl_bin,          SIGMA = z_sig, DEPTH_T = gdept, DEPTH_W = gdepw, E3T = e3t, E3W = e3w, TMASK = mask
66      ENDELSE
67   ENDIF ELSE BEGIN
68      print, '    Performing density bining (assuming global domain)...'
69      IF cmd.var EQ '@@vosigvol' THEN BEGIN
70         print, '    (using bining3)...'
71         bining3, sig.data-1000., data_s, sobwlmax.data, sig_bowl, depth_bin, thick_bin, f_bin, bowl_bin, vol_bin, SIGMA = z_sig, DEPTH_T = gdept, DEPTH_W = gdepw, E1T = e1t, E2T = e2t, E3T = e3t, TMASK = tmask
72      ENDIF ELSE BEGIN
73         print, '    (using bining2)...'
74         bining2, sig.data-1000., data_s, sobwlmax.data, sig_bowl, depth_bin, thick_bin, f_bin, bowl_bin,          SIGMA = z_sig, DEPTH_T = gdept, DEPTH_W = gdepw, E3T = e3t, E3W = e3w, TMASK = tmask
75      ENDELSE
76   ENDELSE
77
78   ; output : depth_bin = depth of isopycnal surfaces (3D array)
79   ;          thick_bin = thickness of isopycnal surfaces (3D array)
80   ;              f_bin = pfild.data averaged for each sigma-layer (3D array)
81
82
83;   print, '    Density domain / intervals : ', sig_min, sig_max, sig_del, n_sig
84
85   IF sig_surf EQ 0. THEN BEGIN
86      ; vertical section (pltz)
87
88      CASE pfildi.name OF
89         '@@vodeptht': nfild = depth_bin(*, *, 0:n_sig-1)
90         '@@vosigthi': nfild = thick_bin(*, *, 0:n_sig-1)
91         '@@vosigvol': BEGIN
92             nfild = vol_bin
93             final_dim = 1
94;            e12t = e1t*e2t
95;            e12t3 = reform((reform(e12t(firstx:lastx, firsty:lasty), nx*ny))#replicate(1,n_sig +2), nx, ny, n_sig+2)
96;            nfild = (thick_bin*e12t3)(*, *, 0:n_sig-1)
97
98         END
99         ELSE: nfild = f_bin(*, *, 0:n_sig-1)
100      ENDCASE
101
102   ENDIF ELSE BEGIN
103      ; horizontal projection on sig_surf (plt) example : votemper@s25
104      ; find index of sig_surf in z_sig
105      index = (where(z_sig LE sig_surf))
106      index = index[n_elements(index)-1]
107
108      CASE pfildi.name OF
109         '@@vodeptht': nfild = depth_bin(*, *, index)
110         '@@vosigthi': nfild = thick_bin(*, *, index)
111         '@@vosigvol': BEGIN
112            nfild = vol_bin
113            final_dim = 1
114;            e12t = e1t*e2t
115;            e12t3 = reform((reform(e12t(firstx:lastx, firsty:lasty), nx*ny))#replicate(1,n_sig +2), nx, ny, n_sig+2)
116;            nfild = ((thick_bin*e12t3)(*, *, index))
117         END
118         ELSE: nfild = f_bin(*, *, index)
119      ENDCASE
120
121   ENDELSE
122
123   IF final_dim eq 3 THEN BEGIN
124      indx =  where(finite(nfild, /NAN))
125      nfild(indx) = -1.e20
126      nfild(indx) = !VALUES.F_NAN
127      indx = where(tmask(*, *, 0) EQ 0)
128      nfild(indx) = !VALUES.F_NAN
129   ENDIF ELSE BEGIN
130 
131   ENDELSE
132
133   pfild2 = {name: pfildi.name, data: nfild, legend: pfildi.legend, units: pfildi.units, origin: pfildi.origin, dim: final_dim,  bowl: bowl_bin}
134   pfildi = pfild2
135
136
137END
Note: See TracBrowser for help on using the repository browser.