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

Last change on this file since 163 was 163, checked in by pinsard, 15 years ago

going on modify unformal header to idldoc 2. header syntax

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