source: trunk/procs/bining3.pro @ 13

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

Initial import from ~/POST_IT/

File size: 3.0 KB
Line 
1PRO bining3,  $                 ;
2;INPUTS
3   density,   $                 ; density at T points (3D array)
4   x1,        $                 ; field at T points (e.g. Salinity or Temperature)
5   sobwlmax,  $                 ; bowl depth array
6   sig_bowl,  $                 ; switch for bowl overlay
7;OUTPUTS
8   depth_bin, $                 ; depth of layers (3D array)
9   thick_bin, $                 ; thickness of layers (3D array)
10   x1_bin,    $                 ; X averaged for each sigma-layer (3D array)
11   bowl_bin,  $                 ; bowl depth binned on density
12    vol_bin2,  $                 ; volume of isopycnals
13; KEYWORDS
14   SIGMA = sigma,      $        ; bining values
15   DEPTH_T = depth_t,  $        ; depth of T level
16   DEPTH_W = depth_w,  $        ; depth of W level
17   E1T = e1t,          $
18   E2T = e2t,          $
19   E3T = e3t,          $
20   TMASK = tmask                ; tmask (3D array)
21
22   size3d = size(density)
23   jpi = size3d(1)
24   jpj = size3d(2)
25   jpk = size3d(3)
26   
27   s_s = sigma
28   N_s = n_elements(s_s)
29   
30   depth_bin  = fltarr(jpi, jpj, N_s)
31   thick_bin  = fltarr(jpi, jpj, N_s)
32   x1_bin = fltarr(jpi, jpj, N_s)
33   bowl_bin = fltarr(jpi, jpj)
34   vol_bin = fltarr(jpi, jpj, N_s)
35   vol_bin2 = fltarr(N_s)
36
37   x1_bin(*, *, *) = !VALUES.F_NAN
38   depth_bin(*, *, *) = !VALUES.F_NAN
39   thick_bin(*, *, *) = !VALUES.F_NAN
40   bowl_bin(*, *) = !VALUES.F_NAN
41   vol_bin(*, *, *) =0
42   vol_bin2(*) =0
43
44   delta_sig = s_s(1)-s_s(0)
45
46   vol_tot = 0.
47   count_bin = fltarr(jpi, jpj, N_s)
48   count_bin2 = fltarr(N_s)
49   count_bin(*, *, *) =0
50   count_bin2(*) =0
51
52; perform bining - loop over i,j,k
53
54   FOR i = 0, (jpi-1) DO BEGIN
55      FOR j = 0, (jpj-1) DO BEGIN
56         i_ocean = where(tmask(i, j, *) EQ 1)
57         IF i_ocean[0] NE -1 THEN BEGIN ; on n entre que si il y a des points ocean
58            i_bottom = i_ocean(n_elements(i_ocean)-1)
59            FOR k = 0, i_bottom-1 DO BEGIN
60               bin_index = floor((density(i, j, k)-s_s(0))/delta_sig+0.5)
61               IF bin_index LT 0 OR bin_index GT (N_s-1) THEN BEGIN
62;                  print, ' WARNING: bin index out of bounds - density(i, j, k), bin_index, N_s = ', density(i, j, k), bin_index, N_s
63               ENDIF ELSE BEGIN
64                  vol_bin(i, j, bin_index) = vol_bin(i, j, bin_index) + e1t(i,j)*e2t(i,j)*e3t(k)
65                  vol_bin2(bin_index) = vol_bin2(bin_index) + e1t(i,j)*e2t(i,j)*e3t(k)
66                  vol_tot = vol_tot + e1t(i,j)*e2t(i,j)*e3t(k)
67                  count_bin(i, j, bin_index) = count_bin(i, j, bin_index)+1
68                  count_bin2(bin_index) = count_bin2(bin_index)+1
69               ENDELSE 
70            ENDFOR
71         ENDIF
72      ENDFOR
73   ENDFOR
74   
75   mask_index = where(count_bin EQ 0)
76   vol_bin(mask_index) = !VALUES.F_NAN
77   mask_index2 = where(count_bin2 EQ 0)
78;   vol_bin2(mask_index2) = !VALUES.F_NAN
79
80   print, ' total volume of box (m3) = ', vol_tot
81;   print, ' density bins = ', vol_bin2
82;   print, ' binned volume (1e14 m3) = ', transpose(vol_bin)*1.e-14
83   
84END
Note: See TracBrowser for help on using the repository browser.