source: trunk/procs/macros/make_ratio.pro @ 2

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

Initial import from ~/POST_IT/

File size: 2.3 KB
Line 
1;
2; compute ratio between 2 or 4 variables [ a/b or (a-b)/(c-d) ]
3
4FUNCTION make_ratio,  file_name,  ncdf_db,  TIME_1 = time_1,  TIME_2 =  time_2,  ALL_DATA = all_data, ZMTYP = zmtyp
5
6@common
7@com_eg
8
9; Extracts the variables between the commas.
10; Pay attention : the order is important (a,b,c,d)
11
12  div =  0.0
13
14  tab_var = strsplit(macro_base_fld, ',', /EXTRACT)
15  IF ( debug_w ) THEN print, 'size(tab_var) : ', size(tab_var)
16
17  IF ( (size(tab_var))[1] NE 2 AND (size(tab_var))[1] NE 4 ) THEN BEGIN
18    print, 'Number of variables in the macro should be 2 or 4'
19  ENDIF
20
21  IF ( (size(tab_var))[1] EQ 4 ) THEN BEGIN
22    a = strtrim(tab_var(0), 2)
23    b = strtrim(tab_var(1), 2)
24    c = strtrim(tab_var(2), 2)
25    d = strtrim(tab_var(3), 2)
26
27    print, 'a : ', a
28    print, 'b : ', b
29    print, 'c : ', c
30    print, 'd : ', d
31
32    var_a =  nc_read(file_name, a,  ncdf_db, TIME_1 = time_1,  TIME_2 =  time_2)
33    var_b =  nc_read(file_name, b,  ncdf_db, TIME_1 = time_1,  TIME_2 =  time_2)
34    var_c =  nc_read(file_name, c,  ncdf_db, TIME_1 = time_1,  TIME_2 =  time_2)
35    var_d =  nc_read(file_name, d,  ncdf_db, TIME_1 = time_1,  TIME_2 =  time_2)
36
37    div = var_a.data
38    ;;div[*, *] = valmask
39    div[*, *] = -1000.0
40    diff =  var_c.data - var_d.data
41
42    idx =  WHERE( diff NE 0.0 )
43    IF( idx[0] EQ -1 ) THEN STOP,  'STOP. Division cannot be computed'
44
45    div(idx) = ( var_a.data(idx) - var_b.data(idx) )/( diff(idx) )
46    legend = ' : ( '+a+' - '+b+' ) / ( '+c+' - '+d+' )'
47
48   ENDIF
49
50   IF ( (size(tab_var))[1] EQ 2 ) THEN BEGIN
51
52    a = strtrim(tab_var(0), 2)
53    b = strtrim(tab_var(1), 2)
54
55    print, 'a : ', a
56    print, 'b : ', b
57
58    var_a =  nc_read(file_name, a,  ncdf_db, TIME_1 = time_1,  TIME_2 =  time_2)
59    var_b =  nc_read(file_name, b,  ncdf_db, TIME_1 = time_1,  TIME_2 =  time_2)
60
61    div = var_a.data
62    div[*, *] = valmask
63
64    idx =  WHERE( var_b.data NE 0.0 )
65    IF( idx[0] EQ -1 ) THEN STOP,  'STOP. Division cannot be computed'
66
67    div(idx) = ( var_a.data(idx) )/( var_b.data(idx)  )
68    legend = ' : '+a+' / '+b
69
70   ENDIF
71
72   varname =  'ratio'
73   varunit =  ''
74
75   field = {name: '', data: div, legend: '', units: '', origin: '', dim: 0,  direc:'xy'}   
76   field.origin = var_a.origin
77   field.dim = var_a.dim
78   field.legend =  legend
79
80   return, field
81
82END
83
84 
85
86
87
88
89
90
91
92
93
94
95
96
97 
Note: See TracBrowser for help on using the repository browser.